Android以编程方式创建ID

时间:2013-02-28 15:26:30

标签: java android

我正在寻找在不使用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),但我想添加v.setId(R.id.some_id),我不想将some_id添加到xml文件中,我知道这个选项。

我的问题是,如何在不将其设置为XML文件的情况下以编程方式创建R.id.some_id。感谢

1 个答案:

答案 0 :(得分:23)

请参阅这个精彩的答案:https://stackoverflow.com/a/13241629/586859

R. *引用明确用于访问 资源 。你想要做的事情实际上是不可能的,但也许你可以像我们上面的答案中的以下部分那样:

保留XML android:id以用于代码

如果无法通过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);