我有一个带有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高程才能将它放在按钮前面。
答案 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>