我们遇到了以下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);
}
}
答案 0 :(得分:3)
我们找到了解决方案。我们需要在布局的子项上调用measure()
。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
textView.measure(widthMeasureSpec, heightMeasureSpec);
}