Textview внутри RelativeLayout в пользовательском View неправильно применяет гравитацию?

Итак, у меня есть установка, в которой я создаю свой собственный View и добавляю в него некоторые TextView. Однако для него нарушена гравитация. (Он центрируется по горизонтали, но не по вертикали). Я делаю это так, потому что есть и другие вещи, которые я рисую в своем представлении, помимо TextView, но они работают нормально. Проблема только в гравитации 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);
    }
}

Это рисует TextView в точных местах и ​​размерах, которые мне нужны (я знаю из-за цвета фона), но гравитация устанавливает их только по центру по горизонтали ... не по вертикали. (да, TextView больше, чем фактические текстовые строки)

Я, ВЕРОЯТНО, мог бы реализовать решение, найденное здесь ( TextView gravity ), но это не кажется очень эффективным или надежным способом получить вокруг этого. Что-то я делаю неправильно, из-за чего гравитация перестает работать правильно? Любой ввод / помощь приветствуются.

6
задан Community 23 May 2017 в 12:16
поделиться