web-dev-qa-db-fra.com

Android définir la gravité d'un TextView par programme

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?

200
Nate
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.

485
Maragues

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

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"
 ...
 .../>
6
Bajrang Hudda
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

Cela va définir la gravité de votre textview.

2
DAS

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.

2
Irshu

Utilisez ce code

        TextView textView = new TextView(YourActivity.this);
        textView.setGravity(Gravity.CENTER | Gravity.TOP);
        textView.setText("some text");
1