我正在创建自己的自定义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());
}
}
答案 0 :(得分:0)
我需要访问标记,该标记在构造函数之后设置, 所以,我需要知道做某事的最佳做法 此
如果您在之后设置标签,则会调用构造函数,那么您的代码将无效,tag
将为null
。如果您计划仅在代码中使用自定义LinearLayout
(而不是在xml布局中),那么您始终可以调整构造函数以获取额外的MyTag
对象:
// ...
public MyLayout(Context context, MyTag theTag) {
super(context);
MyTag tag = theTag;
//...
当然,如果您可以在调用构造函数时(当您实例化类型为MyTag
的新对象时)构建有效的MyLayout
对象,则此方法将起作用。无论如何,如果您的代码如此依赖于MyTag
对象,那么您应该在MyLayout
类中始终使用默认代码,以便在尚未设置标记时使用它。