1

私は拡張するクラスを持っていLinearLayoutます。私は3つのコンストラクターを持っています:

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);
    }

ご覧のとおり、私の初期化には追加のパラメーターがあります: ExtraView. このパラメーターをコンストラクターに設定するにはどうすればよいですか? そこからデータを取得したいので、そのパラメータが必要です。

4

2 に答える 2

1

レイアウトは、パラメーター内のすべての XML パラメーターを .xmlattrsとしてインスタンス化されます (コンストラクターが呼び出されます) AttributeSet。そこからカスタム パラメータを取得し、必要な操作を行う必要があります。カスタム レイアウト/ビューの記述については、こちらを参照してください。

于 2013-07-01T15:53:55.320 に答える
0

xml レイアウトで使用するには 3 つのコンストラクターが必要であるため、このレイアウトを xml 経由でインスタンス化しない場合は、必要なパラメーターを使用して新しいコンストラクターを自由に作成し、コードで使用できます。

ただし、xml レイアウトを使用する場合は、xml でレイアウトのパラメーターを作成し、コンストラクターでそれを読み取る必要があります。

PS: 必要な追加のパラメーターを使用していないため、コード例から何かを切り取った可能性があります。

于 2013-07-01T14:15:12.283 に答える