我正在编程地添加按钮,而按钮的数量取决于某些条件。为了添加RelativeLayout.LayoutParams规则,使按钮对齐在彼此的顶部,我需要设置它们的ID。所有2-3年前的答案都说可以使用setId(int)(例如,setId(1)),但现在已被禁止。(更新:仅使用int字面量是不行的。使用int变量就没问题。不知道为什么。)那么现在应该怎么做呢?
我正在编程地添加按钮,而按钮的数量取决于某些条件。为了添加RelativeLayout.LayoutParams规则,使按钮对齐在彼此的顶部,我需要设置它们的ID。所有2-3年前的答案都说可以使用setId(int)(例如,setId(1)),但现在已被禁止。(更新:仅使用int字面量是不行的。使用int变量就没问题。不知道为什么。)那么现在应该怎么做呢?
根据API, 设置id属性并没有被禁止或废弃。这是最佳的使用方法。
创建res/values/ids.xml
文件并定义:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button1" />
<item type="id" name="button2" />
</resources>
一旦您拥有那个,您就可以使用setId
。button1.setId(R.id.button1);
button2.setId(R.id.button2);
public void setId(@IdRes int id)
,它强制你传递一个ID资源。很高兴能帮到你。 - arsent既然您说您可以拥有任意数量的按钮,那么您可以使用以下方式为每个按钮设置id -
button.setId(View.generateViewId()); //Works for API 17 and above
minSdk
低于 17,则可以使用 - button.setId(counter++); //Each time counter will be increment giving a unique id