自定义布局和TextView的重力(水平重力工作,但垂直失败)

时间:2013-06-03 16:56:20

标签: android textview gravity

我们遇到了以下View的问题。 TextView的重力应该使文本水平和垂直居中,但文本只是水平居中并贴在顶部。怎么了?

public class TestLayout extends ViewGroup {
    private TextView textView;

    public TestLayout(Context context, AttributeSet attrs) {
        super(context, attrs);

        textView = new TextView(context);
        textView.setText("Hello world.");
        textView.setGravity(Gravity.CENTER);
        addView(textView);
    }
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        textView.layout(0, 0, r - l, b - t);
    }   
}

1 个答案:

答案 0 :(得分:3)

我们找到了解决方案。我们需要在布局的子项上调用measure()

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    textView.measure(widthMeasureSpec, heightMeasureSpec);
}