web-dev-qa-db-fra.com

redéfinir une hauteur TextView par programme

Je souhaite réinitialiser une hauteur textView après l'avoir ajoutée à la fenêtre principale du fichier xml.

à l'intérieur d'un RelativeLayout, 

  <TextView
      Android:id="@+id/text_l"
      Android:layout_width="50sp"
      Android:layout_height="50sp"
      Android:layout_alignParentTop="true"
      Android:layout_centerHorizontal="true"
      Android:layout_marginLeft="10sp"
      Android:layout_marginTop="145dp"
      Android:gravity="center"
      Android:textAppearance="?android:attr/textAppearanceLarge"
      Android:textColor="#000000" >
  </TextView>

Je veux juste changer de 50 à 70:

J'ai essayé:

 TextView text = (TextView)findViewById(R.id.text_l);
 text.setHeight(70);

mais rien n'a changé.

33
Q8yDev

Vous devriez le changer via LayoutParams:

LayoutParams params = (LayoutParams) textView.getLayoutParams();
params.height = 70;
textView.setLayoutParams(params);

MODIFIER

Vous ne devriez pas utiliser de tailles en pixels dans votre code, utilisez les dimensions pour cela:

dimens.xml:

<dimen name="text_view_height">50dp</dimen>

Dans du code:

params.height = getResources().getDimensionPixelSize(R.dimen.text_view_height);
89
Jin35

De manière pragmatique, vous pouvez définir la hauteur de textview comme suit:

private TextView mTxtView;
int height = 50; //your textview height
mTxtView.getLayoutParams().height = height;
10
Dhruv Raval

vous pouvez définir dynamiquement la largeur et la hauteur de textview par 

private TextView mTxtView;
private int screenWidth, screenHeight;
Display display = getWindowManager().getDefaultDisplay(); 
    screenWidth = display.getWidth();
    screenHeight = display.getHeight();


LayoutParams params = mTxtView.getLayoutParams();
    params.width = screenWidth-30;
    mTxtView.setLayoutParams(params);
4
Rajeev Kashyap

Je sais que c'est une vieille question, mais pour le bénéfice des autres qui pourraient le trouver, il existe des scénarios dans lesquels vous devriez appeler textView.requestLayout () après avoir modifié les paramètres de présentation. Bien que je sois prêt à l'omettre si vous modifiez simplement les paramètres de la présentation en une fois avant que celle-ci ne soit dessinée. Dans mon cas, je souhaitais modifier le paramètre height d'un TextView en fonction d'une sélection de bouton radio à l'aide de onCheckedChangedListener, mais la hauteur TextView ne serait mise à jour que lors de son premier dessin. L'ajout de requestLayout () a résolu ce problème.

TextView tv;
ViewGroup.LayoutParams params = tv.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
if(!tv.isInLayout()) {//make sure it isn't currently in a layout pass 
    tv.requestLayout();//request a layout pass
 }
0
smitty1