java - 无法在自定义 ViewGroup 上进行垂直对齐

标签 java android android-layout android-linearlayout

我有以下类,它扩展了 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/

相关文章:

java - Lambda 和泛型方法

android - 是否有任何用例示例,其中 @RequiresApi 比 @TargetApi 更有用

android - 为什么我不能终止使用 killBackgroundProcesses 开始的 Activity?

java - 如何在 Java (Swing) 中使用 GridBagLayout 在我的框架中生成此特定图像?

Java读取文件的问题

java - 使用 Java Netbeans 发送电子邮件

java - Android:将徽章添加到我的应用程序内部的图标

安卓电话号码

android - 如何在android中动态启动和完成progressBar

android - 底部栏不显示 ScrollView 内容