安卓:按钮点击时显示勾选标记

3

点击按钮后,应在按钮的左上角显示一个勾选标记图标。再次点击同一按钮时,该勾选标记图标应消失。请问有人能帮我解决这个问题吗?

3个回答

8

虽然这个问题已经有答案了,但是这里提供一种替代解决方案:添加一个Unicode的勾选符号。有两个可用:\u2713和\u2714。只需要将它们添加到你的字符串中:

<string name="button_label_on">\u2713 on</string>
<string name="button_label_off">off</string>

当然,您也可以直接将此代码放入您的布局代码中:
<Button
   ...
   android:text="\u2713 on"
   />

3

您可以在按钮左侧添加一个ImageView(比如tick.png),并将其可见性设置为隐藏。然后设置其可见性。以下是代码:

<LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ImageView
            android:id="@+id/iv_tick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:visibility="gone"
            android:src="@drawable/tick"/>
        <Button 
            android:id="@+id/btn_tick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Press"/>
    </LinearLayout>

现在,在按钮单击事件中,您可以设置其可见性:

Button btn_tick = (Button)findViewById(R.id.btn_tick);
    btn_tick.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                ImageView iv_tick = (ImageView)findViewById(R.id.iv_tick);
                int visibility = iv_tick.getVisibility();
                if(visibility == View.VISIBLE)
                {
                    iv_tick.setVisibility(View.GONE);
                }
                else
                {
                    iv_tick.setVisibility(View.VISIBLE);
                }
            }
        });

1
但我希望勾号重叠在按钮上,而不是在按钮旁边。 - user1155857
您还可以使用ImageButton。为选中和正常状态选择适当的图像,并在单击事件上更改它们。 - Khawar

0

我不想要一个复选框。UI 应该只有一个按钮,当点击按钮时,在按钮的左上角应出现一个勾号图标。 - user1155857
你可以定制CheckBox小部件的外观,使其看起来像一个勾选框。无论如何,如果你不想使用CheckBox小部件(虽然我认为你应该使用),你可以在按钮左侧添加一个初始可见性设置为“gone”的勾选图像,并在单击按钮时将其设置为“visible”。 - neevek
我无法理解你解决方案的后半部分。您能否告诉我如何将图像添加到按钮中,然后更改其可见性? - user1155857
这是两个小部件,一个勾选图像(ImageView)和一个按钮(Button)。将它们从左到右依次布局。 - neevek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接