いいえ、実行時にR.idの残りの部分に関して一意であると見なされるIDを生成することはできません。申し訳ありません。このメソッドを使用して、ビューのIDをJavaコードで任意の値に設定できますsetId()
が、検討するオプションは次のとおりです。
- 動的ビューのIDを0、1、2、3、さらには100、101、102、103などの値に設定します。R.idによって生成される値は常に0x7Fで始まるため、非常に大きくなることに気付いたかもしれません。衝突する値を選択する可能性はほとんどありません。
- ビューのハッシュコードを使用して
view.setId( view.hashCode() )
、より一意のIDを生成します。これはRadioGroup
、子がIDを持っていない場合に行われます。
- を作成することで、ビューにアタッチされていないR.id値を事前に生成できます
res/values/ids.xml
(SDKの記事を参照)。これらは、実行時にで追加でき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