2

我有 5 个简单的按钮,我希望它们表现得像单选按钮,但没有勾选框(或他们称之为的任何东西)。They are aligned in row and I want only one of them to be selected at once, and when a button is selected it must keep its selected style. 我的布局代码如下所示:

        <Button
            android:id="@+id/button1"
            android:layout_width="150dp"
            android:layout_height="fill_parent"
            android:layout_alignParentTop="true"
            android:layout_margin="0dp"
            android:text="@string/mybutton1" />

        <Button
            android:id="@+id/button2"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toRightOf="@+id/button1"
            android:text="@string/mybutton2" />

        // and so on

我的代码:

    mybtn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mybtn1.setPressed(true);
        }
    });

所以,我不知道我是否可以在布局或代码中做到这一点。当我单击它时,有什么方法可以使按钮保持选定状态(和选定样式)?另外,是否可以将事件分配给所有这些按钮?

谢谢!

4

2 回答 2

6

只需在 onClickListener 中设置它们的选定状态:

myButton.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v)
    {
        //handle click
        v.setSelected(true);
    }
});

单击状态只是选定状态,您可以打开和关闭该状态以使其生效。

于 2013-03-04T18:54:57.340 回答
0

如果您希望按钮的行为是将它们用作复选框,则可以使用ToggleButton

在您的情况下,实际上将是一个切换按钮列表,当您单击一个时,您必须使用以下命令取消选择所有其他按钮:

for (ToggleButton btn : buttons)
    if (btn != crtButton)
        btn.setChecked(false);
于 2013-03-04T19:09:26.373 回答