Android программно устанавливает гравитацию для TextView

Я могу использовать android:gravity="bottom|center_horizontal" в xml на textview, чтобы получить желаемые результаты, но мне нужно сделать это программно. Мой textview находится внутри tablerow если это имеет значение в relativelayout.

Я пробовал:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);

но если я правильно понимаю, это применит его к tablerow, а не textview?

6 ответов


labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);

кроме того, вы говорите о гравитация или о layout_gravity? Последний не будет работать в RelativeLayout.


это будет центрировать текст в текстовом представлении:

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);

мы можем установить гравитацию макета на любом виде, как показано ниже -

myView = findViewById(R.id.myView);
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
 or
myView.setGravity(Gravity.BOTTOM);

Это equilent ниже XML-код

<...
 android:gravity="center_vertical|right"
 ...
 .../>

вы должны использовать textView.setGravity(Gravity.CENTER_HORIZONTAL);.

помните, что с помощью

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;

не будет работать. Это установит гравитацию для виджета, а не для его текста.


используйте этот код

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

textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

это установит гравитацию вашего textview.