Je peux utiliser Android:gravity="bottom|center_horizontal"
in xml sur une vue textuelle pour obtenir les résultats souhaités, mais je dois le faire par programme. Mon textview est à l'intérieur d'un tablerow
si cela compte dans un relativelayout
.
J'ai essayé:
LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);
Mais si je comprends bien, cela s’appliquerait à la tablerow
, pas à textview?
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Version Kotlin (merci à Thommy)
labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM
Aussi, parlez-vous de gravité ou de layout_gravity? Ce dernier ne fonctionnera pas dans un RelativeLayout.
Cela va centrer le texte dans une vue texte:
TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);
Nous pouvons définir la gravité de la mise en page sur n'importe quelle vue comme ci-dessous
myView = findViewById(R.id.myView);
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
or
myView.setGravity(Gravity.BOTTOM);
Ceci est équivalent au code XML ci-dessous
<...
Android:gravity="center_vertical|right"
...
.../>
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Cela va définir la gravité de votre textview.
Vous devriez utiliser textView.setGravity(Gravity.CENTER_HORIZONTAL);
.
Rappelez-vous qu'en utilisant
LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
ne fonctionnera pas. Cela définira la gravité pour le widget et non pour son texte.
Utilisez ce code
TextView textView = new TextView(YourActivity.this);
textView.setGravity(Gravity.CENTER | Gravity.TOP);
textView.setText("some text");