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.

0voto

Salman Nazir Points 1230

Utilisation des extensions Kotlin :

Voici une extension simple pour définir les marges de l'affichage du texte.

fun View.setMargins(marginLeft: Int, marginTop: Int, marginRight: Int, marginBottom: Int) {
  val params: LinearLayout.LayoutParams =
    LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
  params.setMargins(margin.dp, 0, margin.dp, 0)
  this.layoutParams = params
}

Pour Int a dp conversion, voici une autre extension

val Int.dp: Int
  get() = (this * Resources.getSystem().displayMetrics.density).toInt()

Vous pouvez appeler cette extension pour donner une marge horizontale de 8dp comme suit

yourTextView.setMargins(8, 0, 8, 0)

0voto

Mori Points 87

Si vous utilisez Kotlin ex. dans Adapter ajouter comme ça :

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val params = holder.tvNext.layoutParams as MarginLayoutParams
        params.bottomMargin=0

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