9

我正在寻找在代码中创建 ID 而不使用 XML 声明。例如,我有代码,我在其中以编程方式创建这样的视图

@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 文件中,我知道这个选项。

我的问题是,如何以R.id.some_id编程方式创建而不在 XML 文件中设置它。谢谢

4

1 回答 1

24

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

R.* 引用明确用于访问资源。您尝试做的事情实际上是不可能的,但也许您可以从上面的答案中获得类似于以下部分的内容:

保留 XMLandroid:id以在代码中使用

如果您ViewGroup不能通过 XML 定义(或者您不希望这样),您可以通过 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 回答