如果我在xml中创建了一个按钮,并且我想多次使用此按钮但是给它们唯一的id,我该怎么做?我不知道我有多少按钮,所以我不能在我的xml文件中创建一些按钮。我希望能够在运行程序时更改按钮ID。我试过做button.setId()但是然后一切都坏了,不会工作。
答案 0 :(得分:2)
您可以创建一个独立的button.xml文件(甚至可以将其作为样式),然后根据需要在代码中对其进行充气。
例如,假设您有一组表示国家/地区列表的字符串,并且您希望每个国家/地区都有一个按钮。这很好,因为如果你添加或删除任何,你只需要修改数组,而不是你的xml或for循环。
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
String[] countries = {"US", "Canada", "UK", "Australia"};
String country;
// Don't forget to add the following layout to your xml.
LinearLayout buttonLayout = (LinearLayout) findViewById(R.id.buttonLayout);
buttonLayout.removeAllViews();
for (int i = 0; i < countries.length(); i++) {
country = countries.getString(i);
Button temp = (Button)inflater.inflate(R.layout.button);
// Don't forget that id is an int, not a string.
button.setId(id);
button.setText(country);
buttonLayout.addView(temp);
}
Bonus:您还可以在另一个xml文件中包含此按钮,并按如下方式更新include语句中的id:
<include layout="@layout/button"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button 1"
/>
答案 1 :(得分:1)
问题不是很清楚,但我认为你可以使用动态按钮创建。
Button button = new Button();
// init it here
layout.add(button, new LayoutParams(...));
答案 2 :(得分:0)
在xml中提供id,如
<Button android:id="@+id/close"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="@string/title_close" />
答案 3 :(得分:0)
如果您不确定应用某个小部件时需要的实例,那么请进行动态创建。 XML主要用于静态创建。