第一次单击时,ImageButton并不总是可单击

时间:2015-06-24 11:57:58

标签: android android-layout android-imagebutton

我在布局中有一些ImageButtons。图像资源为32x32像素。它们都具有相同的属性:

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/ibButton1"
                android:clickable="true"
                android:focusable="false"
                android:focusableInTouchMode="false"
                android:layout_weight="0"
                android:src="@drawable/not_selected"
                android:layout_gravity="center_vertical"
                android:background="@null"/>

在我的片段中,我正在做:

    final ImageButton button1 = (ImageButton)view.findViewById(R.id.ibButton1);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            isSelected = !isSelected;

            if (isSelected ) {
                button1.setImageResource(R.drawable.selected);
            }
            else {
                button1.setImageResource(R.drawable.not_selected);
            }
        }
    });

但是,大多数情况下我需要在按钮上单击5次才能注册点击。

我是否需要增加图片尺寸,还是有更好的方式来收听点击次数?我应该使用onClick属性吗?

4 个答案:

答案 0 :(得分:3)

提供一些填充以增加Tap区域。

android:padding="10dp"

答案 1 :(得分:0)

也许,图像的大小太小(正如@Shoeb Siddique所说)在图像上获得触摸事件。您可以增加图像的填充或大小,以提高触摸图像的概率。

答案 2 :(得分:0)

在我看来,你不需要一个ImageButton,而是一个带状态的ToggleButton。 http://developer.android.com/guide/topics/ui/controls/togglebutton.html

请删除android:clickable =&#34; true&#34; ,它不是必需的,因为它是一个按钮,这意味着默认情况下是真的。如果它是TextView,则需要它。

答案 3 :(得分:0)

使用触摸区域提取图像我的意思是透明背景 对于Eg:Give Image是86 * 70 px所以当用户触摸圆形透明背景86 * 70px时你可以发射事件

enter image description here