1

したがって、両方にlayout_gravity`のボタンを追加TextViewsし、それらに一意のIDを取得する必要があります。コード内からIDを追加する方法はありますか?to my code **inside** the code itself like, dynamically adding them inside aloop. My problem is setting the

アップデート

TextViewsとのIDが必要ですがButtons、フォルダに入るにR.idはそれも可能ですか?

4

2 に答える 2

2
// sets button properties
    btn = new ImageButton(this);
    btn.setId(id);
    btn.setTag(Image_Name);

    btn.setBackgroundColor(Color.TRANSPARENT);
    btn.setAdjustViewBounds(true);

    btn.setImageBitmap(bmp);

    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

        // Implement Click Listener

        }
    });

このようなコンポーネントを使用できます。

于 2012-05-04T18:09:47.000 に答える
2

いいえ、実行時にR.idの残りの部分に関して一意であると見なされるIDを生成することはできません。申し訳ありません。このメソッドを使用して、ビューのIDをJavaコードで任意の値に設定できますsetId()が、検討するオプションは次のとおりです。

  1. 動的ビューのIDを0、1、2、3、さらには100、101、102、103などの値に設定します。R.idによって生成される値は常に0x7Fで始まるため、非常に大きくなることに気付いたかもしれません。衝突する値を選択する可能性はほとんどありません。
  2. ビューのハッシュコードを使用してview.setId( view.hashCode() )、より一意のIDを生成します。これはRadioGroup、子がIDを持っていない場合に行われます。
  3. を作成することで、ビューにアタッチされていないR.id値を事前に生成できますres/values/ids.xmlSDKの記事を参照)。これらは、実行時にで追加できview.setId(R.id.xxx)ます。

あなたの問題に関する限りlayout_gravity、これはおそらくlayout_XMLで接頭辞が付けられた値LayoutParamsが実際のビューのプロパティではなく、そうであるためです。LayoutParamsその値をオブジェクトに追加し、それらのパラメーターを新しいビューに設定する必要があります。

Button button;
LinearLayout layout;
LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.gravity = Gravity.CENTER;

//Option #1 to add
layout.addView(button, lp);

//Option #2 to add
button.setLayoutParams(lp);
layout.addView(button);

HTH

于 2012-05-04T18:38:09.440 に答える