Итак, у меня есть настройка, в которой я создаю свой собственный вид и добавляю в него несколько текстовых представлений. Тем не менее, гравитация нарушена. (Он центрируется по горизонтали, но не по вертикали). Я делаю это таким образом, потому что есть и другие вещи, которые я также рисую в своем представлении, кроме только TextViews, но они работают нормально. Есть только проблема с гравитацией TextView. Вот частичный код того, что у меня есть.
public class myView extends View {
protected RelativeLayout baseLayout;
protected TextView textView1;
protected TextView textView2;
public myView (Context context) {
super(context);
setLayoutParams(new LayoutParams(FILL_PARENT, FILL_PARENT));
baseLayout = new RelativeLayout(context);
baseLayout.setLayoutParams(new LayoutParams(FILL_PARENT, FILL_PARENT));
textView1 = new TextView(context);
// initialize textView1 string, id, textsize, and color here
textView2 = new TextView(context);
// initialize textView2 string, id, textsize, and color here
baseLayout.addView(textView1);
baseLayout.addView(textView2);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
Resources res = getResources();
// calculate out size and position of both textViews here
textView1.layout(left1, top1, left1 + width1, top1 + height1);
textView1.setGravity(Gravity.CENTER);
textView1.setBackgroundColor(green); // just to make sure it's drawn in the right spot
textView2.layout(left2, top2, left2 + width2, top2 + height2);
textView2.setGravity(Gravity.CENTER);
textView2.setBackgroundColor(blue); // same as above
baseLayout.draw(canvas);
}
}
Это рисует TextViews в точных точках и размерах, которые я хочу им (я знаю из-за цвета фона), но гравитация устанавливает их только по центру по горизонтали, а не по вертикали. (да, TextViews больше, чем фактические текстовые строки)
Я мог бы ВЕРОЯТНО реализовать найденное здесь решение ( TextView gravity ), но это не очень эффективный и надежный способ обойти это. Есть ли что-то, что я делаю неправильно, что заставляет гравитацию перестать работать правильно? Любой вклад / помощь приветствуется.