Android définit la gravité pour un TextView par programmation
Je peux utiliser android:gravity="bottom|center_horizontal"
en xml sur un textview pour obtenir les résultats souhaités, mais je dois le faire par programme. Mon textview est dans 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 l'appliquerait au tablerow
, pas au textview?
6 réponses
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Aussi, parlez-vous de gravité ou sur layout_gravity? Ce dernier ne fonctionnera pas dans un RelativeLayout.
Cela centrera 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 disposition 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 égal au code xml ci-dessous
<...
android:gravity="center_vertical|right"
...
.../>
Vous devriez utiliser textView.setGravity(Gravity.CENTER_HORIZONTAL);
.
Rappelez-vous que l'utilisation de
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");
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Cela définira la gravité de votre textview.