触摸时Android ImageView不可见

时间:2015-04-08 07:11:52

标签: java android android-layout

我有一个带有ImageView叠加的按钮。 ImageView无法点击,因此我仍然可以使用该按钮。奇怪的是,当我触摸按钮时,不可点击的ImageView变为不可见,并在我释放它时再次出现。

<RelativeLayout
    android:id="@+id/buttonMailLayout"
    android:layout_width="208dp"
    android:layout_height="160dp"
    android:layout_centerHorizontal="true">

    <Button
        android:id="@+id/buttonMail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/metal"
        android:text="Write Mail"
        android:textSize="32dp"
        android:gravity="bottom|center_horizontal"
        android:paddingBottom="16dp"/>

    <ImageView
        android:id="@+id/imageMail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/email20"
        android:elevation="2dp"
        android:paddingTop="8dp"
        android:paddingBottom="64dp"
        android:clickable="false"/>

</RelativeLayout>

以下是我使用的代码:

Button buttonMail = (Button) this.findViewById(R.id.buttonMail);

buttonMail.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
            Toast.makeText(getApplicationContext(), "New Mail to : " + p._email,
                    Toast.LENGTH_SHORT).show();
        }
    });

任何想法出了什么问题?它可能与海拔有关吗?我必须在5.1上的ImageView中添加2dp高程才能将它放在按钮前面。

1 个答案:

答案 0 :(得分:1)

我认为5.0及以上版本中的按钮默认提升行为导致了这个问题,尝试将按钮放在单独的布局中,这样就可以了:

<RelativeLayout
android:id="@+id/buttonMailLayout"
android:layout_width="208dp"
android:layout_height="160dp"
android:layout_centerHorizontal="true">

<FrameLayout    
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom|center_horizontal"
>
    <Button
        android:id="@+id/buttonMail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/metal"
        android:text="Write Mail"
        android:textSize="32dp"         
        android:paddingBottom="16dp"/>
</FrameLayout>  
<ImageView
    android:id="@+id/imageMail"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/email20"
    android:elevation="2dp"
    android:paddingTop="8dp"
    android:paddingBottom="64dp"
    android:clickable="false"/>

</RelativeLayout>