我有一个覆盖整个屏幕的覆盖图,以便在用户第一次启动应用时提供简单的消息。在这个叠加层上有一个单独的按钮,可以解散叠加层(通过设置其可见性消失)。我有一个我不知道如何解决的问题。
首先,xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main_rootview"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="Activity.MainActivity"
android:orientation="vertical">
<include
android:id="@+id/activity_main_content"
layout="@layout/main_content"/>
<RelativeLayout
android:id="@+id/activity_main_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:background="#B3000000">
<Button
android:id="@+id/button dismiss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="10dp"
android:layout_marginRight="10dp"
android:text="@string/ok"/>
</RelativeLayout>
</RelativeLayout>
他们第一次启动应用时,我将此叠加设置为可见。我希望他们能够点击按钮,这会将叠加层的可见性设置为View.GONE
。正如此代码所示,他们可以单击按钮,一切都很顺利。但是,如果他们点击叠加层上的任何其他位置,则点击会通过叠加层,叠加层后面的内容会响应,就像叠加层不存在一样。我希望这个叠加层吸收点击,只响应按钮。
所以,明显的反应是将clickable="true"
添加到叠加层,对吗?但是,按钮本身并不响应点击,并且用户卡在叠加层上,从而破坏了叠加层的整个目的。有时,如果我等待足够长的时间,按钮会发生按钮,但如果发生这种情况,那么在按钮响应之前,这是一个令人无法接受的长时间延迟。
如何让按钮响应点击,同时叠加功能会消耗所有其他点击事件?谢谢你的帮助。
答案 0 :(得分:0)
也许这不是最干净的解决方案,但您可以在叠加层上设置onclickListener事件。 例如
RelativeLayout overlay = (RelativeLayout)findViewById(R.id.activity_main_overlay);
overlay.setOnClickListener(new OnClickListener(){
});
//button click
Button btn = findViewById(R.id.button_dismiss);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//button action
}
);