web-dev-qa-db-fra.com

Comment définir les marges pour TextView par programme?

TextView tv1 = new TextView(this);      
tv1.setPadding(5, 0, 5, 0);
tv1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
tv1.setBackgroundColor(Color.parseColor("#0099cc"));
tv1.setTextColor(Color.WHITE);
tv1.setTextSize(11);
tv1.setGravity(Gravity.LEFT | Gravity.BOTTOM);
tv1.setText("Test1");
ll.addView(tv1);

TextView tv2 = new TextView(this);      
tv2.setPadding(5, 0, 5, 0);
tv2.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
tv2.setBackgroundColor(Color.parseColor("#0099cc"));
tv2.setTextColor(Color.WHITE);
tv2.setTextSize(11);
tv2.setGravity(Gravity.LEFT | Gravity.BOTTOM);
tv2.setText("Test2");
ll.addView(tv2);

Comme vous pouvez le constater, dans cette paix de code, je règle la couleur d'arrière-plan de TextView. Ce que je veux faire, c'est séparer ces deux variables TextView afin que leurs couleurs d'arrière-plan soient séparées par une ligne. Je ne veux pas qu'ils se connectent. Si je comprends bien, il serait possible de le faire si je pouvais définir les marges de TextView, mais comme je le sais, les TextView ne sont pas en mesure de le faire.

43
user2205288

défini sur LayoutParams.

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);
90
dmnlk

Cela dépend de votre vue parent. 

Si vous utilisez LinearLayout sur votre vue parent textview, donnez les paramètres comme ci-dessous

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);

Si vous utilisez RelativeLayout sur votre vue parent textview, donnez les paramètres comme ci-dessous

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.WRAP_CONTENT, RelativeLayout.WRAP_CONTENT);
params.setMargins(10,10,10,10);
tv1.setLayoutParams(params);
0
Emre Tekin

Celui-ci devrait être essayé

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT);
        params.setMargins(10,20,30,20);
        txt_gender.setLayoutParams(params);
0
Sam