Android按钮ID

时间:2011-05-03 08:23:29

标签: android

如果我在xml中创建了一个按钮,并且我想多次使用此按钮但是给它们唯一的id,我该怎么做?我不知道我有多少按钮,所以我不能在我的xml文件中创建一些按钮。我希望能够在运行程序时更改按钮ID。我试过做button.setId()但是然后一切都坏了,不会工作。

4 个答案:

答案 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主要用于静态创建。