1

我有一门课,我扩展了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。如何将此参数设置为构造函数?我需要那个参数,因为我想从中获取一些数据。

4

2 回答 2

1

您的布局将使用参数中的所有 XML 参数attrs作为AttributeSet. 您需要从那里获取自定义参数并使用它们做您想做的事情。有关编写自定义布局/视图的帮助,请参阅此内容。

于 2013-07-01T15:53:55.320 回答
0

在 xml 布局上使用需要 3 个构造函数,因此如果您不通过 xml 实例化此布局,您可以使用您需要的参数自由创建一个新的构造函数并在代码中使用它。

但是如果使用 xml 布局,则需要在 xml 中为布局创建一个参数,并在构造函数中读取该参数。

PS:也许你从你的代码示例中删除了一些东西,因为你没有使用你想要的额外参数。

于 2013-07-01T14:15:12.283 回答