我有以下类,它扩展了 ViewGroup 类。
我表示我希望文本对齐“BOTTOM |”如果按钮位于 LinearLayout 中,则“RIGHT”可以正常工作,但在我的自定义推导中,它只考虑“RIGHT”参数。
我极大地简化了我的类(class),使其更易于阅读。
我是否遗漏了一些明显的东西?
谢谢 丰富
public class LayoutManager extends ViewGroup
{
private Button b1;
public LayoutManager(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
LocalInit(context);
}
public LayoutManager(Context context, AttributeSet attrs)
{
super(context, attrs);
LocalInit(context);
}
public LayoutManager(Context context)
{
super(context);
LocalInit(context);
}
private void LocalInit(Context context)
{
b1=new Button(context);
b1.setText("hello button 1");
b1.setGravity(Gravity.BOTTOM | Gravity.RIGHT);
super.addView(b1);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
b1.layout(100, 100, 300, 300);
}
}
最佳答案
您必须使用View.measure(int widthMeasureSpec, int heightMeasureSpec)
告诉您的 Button
无论它想要多大,它都将是 200 x 200。将其添加到 LayoutManager
中:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
b1.measure(MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(200, MeasureSpec.EXACTLY));
}
关于java - 无法在自定义 ViewGroup 上进行垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953571/