有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android以编程方式创建ID

我希望在代码中创建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文件中设置它。谢谢


共 (1) 个答案

  1. # 1 楼答案

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

    R.*引用被明确用于访问资源。你想做的事情实际上是不可能的,但也许你可以从上面的答案中给我们一些类似以下部分的东西:

    保留一个XML android:id用于代码

    如果您的ViewGroup无法通过XML定义(或者您不希望这样),您可以通过XML保留id,以确保其保持唯一性:

    这里,值/id。xml定义了一个自定义id:

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

    创建视图组或视图后,可以附加自定义id

    myViewGroup.setId(R.id.reservedNamedId);