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

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

Я пробовал:

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

Но если я правильно понял, это применило бы его к tablerow, а не к тексту?

Ответ 1

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

версия Kotlin (спасибо Томми)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

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

Ответ 2

Это центрирует текст в текстовом виде:

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

Ответ 3

Мы можем установить плотность размещения на любом виде, как показано ниже:

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

Это равнозначно ниже xml-кода

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

Ответ 4

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

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

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

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

Ответ 5

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

Это придаст серьезность вашему текстуру.

Ответ 6

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

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

Ответ 7

Решите это, выполнив несколько вещей, сначала получив height моего TextView и погрузив его на текст size, чтобы получить общее количество возможных строк с TextView.

int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize();

После того, как вы получите это значение, вам нужно установить TextView maxLines на это новое значение.

TextView.setMaxLines(maxLines);

Установите для параметра Gravity значение Bottom, как только будет превышено максимальное количество строк, и оно автоматически прокрутится вниз.

if (TextView.getLineCount() >= maxLines) {
    TextView.setGravity(Gravity.BOTTOM);
}

Для того, чтобы это работало правильно, вы должны использовать append() для TextView, если вы setText(), это не сработает.

TextView.append("Your Text");

Преимущество этого метода заключается в том, что его можно использовать динамически независимо от height вашего TextView и текста size. Если вы решите внести изменения в свой макет, этот код все равно будет работать.