90 votes

Comment définir les marges d'un TextView de manière programmatique ?

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 voir, dans cette paix de code, j'ai mis TextView La couleur d'arrière-plan. Ce que je veux faire, c'est séparer ces deux éléments TextView de sorte que leurs couleurs de fond soient séparées par une ligne. Je ne veux pas qu'ils soient reliés. D'après ce que j'ai compris, il serait possible de le faire, si je pouvais définir des marges de TextView mais comme je le sais, TextView ne sont pas en mesure de le faire.

174voto

dmnlk Points 345

Défini à LayoutParams.

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

9voto

Emre Tekin Points 240

Cela dépend de votre point de vue de parent.

Si vous utilisez LinearLayout sur votre textview comme vue parent, donnez des 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 textview comme vue parent, donnez des paramètres comme ci-dessous

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

6voto

Eli TheHuman Points 36

Toutes ces réponses sont excellentes, mais j'utilisais ConstraintLayout, voici donc le code correspondant :

ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(10, 10, 10, 10);
textview.setLayoutParams(params); // note that textview would be your instanced TextView object

6voto

Tanmoy Patra Points 99

Pour Kotlin, utilisez l'extrait de code suivant

(textView.layoutParams as ConstraintLayout.LayoutParams).apply {
        marginStart=8.dpToPixels()
        topMargin=8.dpToPixels()
        marginEnd=8.dpToPixels()
        bottomMargin=8.dpToPixels()
    }

Modifiez LayoutParams en fonction de la disposition utilisée. Merci.

1voto

Sam Points 2090

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);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X