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é.
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);
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;
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);
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
}