Ответ 1
Это неправильное поведение, которое вы просто пытаетесь установить неверное свойство.
С помощью TextView.setGravity(Gravity.CENTER)
вы устанавливаете плотность содержимого TextView.
Что вы ищете, это layout_gravity
.
Кто-нибудь пытался написать собственную реализацию ViewGroup с некоторыми TextViews в нем?
У меня проблема, что TextViews в такой реализации не учитывают свойство гравитации TextView.setGravity(Gravity.CENTER)
, а текст помещается в верхнем левом углу.
Может ли кто-нибудь помочь мне узнать, почему?
EDIT:
Ok. Я никогда не думал об этом, я уже сам это понял.
Если enyone заинтересован, я просто перезаписал метод onMeasure()
(для всех моих TextViews) и изменил вызов с super.onMeasure()
на setMeasuredDimension(int, int)
, и гравитация начала нормально работать.
В принципе, в моем пользовательском макете я использую следующий класс для отображения текста:
private static class GravityTextView extends TextView {
public GravityTextView(Context context) {
super(context);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
}
}
Это неправильное поведение, которое вы просто пытаетесь установить неверное свойство.
С помощью TextView.setGravity(Gravity.CENTER)
вы устанавливаете плотность содержимого TextView.
Что вы ищете, это layout_gravity
.
Я знаю, что это довольно старый пост, но я нашел ответ на эту дилемму в своей работе. Вы можете прочитать об этом здесь.