我正在寻找在不使用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
。感谢
答案 0 :(得分:23)
请参阅这个精彩的答案:https://stackoverflow.com/a/13241629/586859
R. *引用明确用于访问 资源 。你想要做的事情实际上是不可能的,但也许你可以像我们上面的答案中的以下部分那样:
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);