0

我正在创建自己的自定义 LinearLayout,并扩展它的类,我需要使用 addview 方法将子级添加到布局中,

我需要访问在构造函数之后设置的标签,所以我需要知道做这样的事情的最佳实践

这是我的代码:

public class MyLayout extends LinearLayout {

    public MyLayout(Context context) {
        super(context);


        MyTag tag = (MyTag) getTag();


        // Parent layout
        setOrientation(VERTICAL);
        setLayoutParams(new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT));
        setBackgroundColor(tag.getBgColor());
    }

}
4

1 回答 1

0

我需要访问在构造函数之后设置的标签,所以我需要知道做这样的事情的最佳实践

如果您在调用构造函数设置标签,那么您的代码将不起作用,tag将是null. 如果您打算LinearLayout仅在代码中使用自定义(而不是在 xml 布局中),那么您始终可以调整构造函数以获取额外的MyTag对象:

// ...
public MyLayout(Context context, MyTag theTag) {
    super(context);
    MyTag tag = theTag;
//...

当然,如果您可以MyTag在调用构造函数的那一刻(当您实例化一个类型的新对象时MyLayout)构建一个有效的对象,这将起作用。无论如何,如果您的代码如此依赖于MyTag对象,那么您应该始终在类中有一个默认值,MyLayout以便您可以在尚未设置标签时使用它。

于 2012-10-12T13:49:30.987 回答