我有一个课程,我延伸LinearLayout
。
我有三个构造函数:
public IconsComponent(Context context) {
super(context);
init(context);
}
public IconsComponent(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public IconsComponent(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
这是我的初学者:
public void init(final Context context, ExtraView patient) {
this.context = context;
View root = LayoutInflater.from(context).inflate(
R.layout.icons_component_view, null);
LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
vitalParamsIcon = (ImageView) root.findViewById(R.id.icons_component_vital_params);
vitalParamsIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startMetActivity(getContext());
}
});
addView(root, layoutParams);
}
你可以看到我的init有额外的参数:ExtraView。如何将这个参数设置为构造函数?我需要那个参数,因为我想从中获取一些数据。
答案 0 :(得分:1)
您的布局将实例化(构造函数调用),参数attrs
中的所有XML参数都为AttributeSet
。您需要从那里获取自定义参数,并使用它们执行您想要的操作。有关编写自定义布局/视图的帮助,请参阅this。
答案 1 :(得分:0)
在xml布局上需要使用3个构造函数,因此如果不通过xml实例化此布局,则可以使用所需的参数自由创建新的构造函数,并在代码中使用它。
但是如果使用xml布局,则需要在xml中为布局创建一个参数,并在构造函数中读取该参数。
PS:也许你从代码示例中删除了一些东西,因为你没有使用你想要的额外参数。