9

XML宣言を使用せずにコードでIDを作成することを探しています。たとえば、このようなビューをプログラムで作成するコードがあります

@Override
protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);
  setContentView(R.layout.new_layout);

  LinearLayout ll = (LinearLayout)findViewById(R.id.layout);
  View v = new View(this);
  v.setBackgroundColor(0xFFFF0000);
  ll.addView(v, 100, 100);

}

追加することはできますが、追加しv.setId(50)たいのですが、xmlファイルにv.setId(R.id.some_id)追加したくないのです。このオプションは私が知っています。some_id

私の質問は、R.id.some_idXMLファイルに設定せずにプログラムで作成する方法です。ありがとう

4

1 に答える 1

24

この素晴らしい答えを参照してください:https ://stackoverflow.com/a/13241629/586859

R. *参照は、リソースにアクセスするために明示的に使用されます。あなたがやろうとしていることは実際には不可能ですが、おそらくあなたは上記の答えから次のセクションのようなものを私たちに与えることができます:

android:idコードで使用するためにXMLを予約する

XMLで定義できない場合ViewGroup(または定義したくない場合)は、XMLを介してIDを予約し、一意のままにすることができます。

ここで、values/ids.xmlはカスタムを定義しますid

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="reservedNamedId" type="id"/>
</resources>

次に、ViewGroupまたはViewが作成されたら、カスタムIDを添付できます

myViewGroup.setId(R.id.reservedNamedId);
于 2013-02-28T15:30:57.903 に答える