2

我们遇到了以下问题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);
    }   
}
4

1 回答 1

3

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

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    textView.measure(widthMeasureSpec, heightMeasureSpec);
}
于 2013-06-04T08:22:19.027 回答