使按钮的背景透明使其不可单击



我有一个按钮,可以很好地响应点击,直到我让它透明。我不知道会出什么问题。所有其他具有透明背景的按钮都会响应单击。这是xml,有问题的按钮是id:door_handle:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/wall4EarthRoom"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/door_wall" >
    <Button
        android:id="@+id/hanging_walk"
        android:layout_width="80dp"
        android:layout_height="200dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="268dp"
        android:layout_marginTop="49dp"
        android:background="@android:color/transparent"
        android:clickable="false"
        android:onClick="goOut" />
    <Button
        android:id="@+id/door_handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="279dp"
        android:layout_marginTop="136dp"
        android:onClick="openTheDoor" 
        android:background="@android:color/transparent"/>
    <Button
        android:id="@+id/peephole_doorwall"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="289dp"
        android:layout_marginTop="127dp"
        android:background="@android:color/transparent"
        android:clickable="false"
        android:onClick="zoomImage" />
    <ImageView
        android:id="@+id/queen_rabbit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</RelativeLayout>

我会重复以防万一:如果我删除"android:background="@android:color/transparent"一行,该按钮就会起作用

尝试为该按钮添加一些实际高度,例如 30dp,该按钮没有任何文本wrap_content因此可能会使其太小。

如果上述答案不起作用,并且您想要快速修复,请使用透明图像,而不是透明颜色。

我删除了 xml 中door_handle按钮的 onClick 事件并创建了这个。它对我有用。

    btn1 = (Button)findViewById(R.id.door_handle);
    btn1.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "door handle", Toast.LENGTH_SHORT).show();
        }
    });

我正在使用安卓 4.3 - API 级别 18

您使用什么目标级别?

最新更新