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
. Если вы решите внести изменения в свой макет, этот код все равно будет работать.