Android - 覆盖按钮没有正确响应

时间:2016-07-20 04:49:17

标签: android

我有一个覆盖整个屏幕的覆盖图,以便在用户第一次启动应用时提供简单的消息。在这个叠加层上有一个单独的按钮,可以解散叠加层(通过设置其可见性消失)。我有一个我不知道如何解决的问题。

首先,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"添加到叠加层,对吗?但是,按钮本身并不响应点击,并且用户卡在叠加层上,从而破坏了叠加层的整个目的。有时,如果我等待足够长的时间,按钮会发生按钮,但如果发生这种情况,那么在按钮响应之前,这是一个令人无法接受的长时间延迟。

如何让按钮响应点击,同时叠加功能会消耗所有其他点击事件?谢谢你的帮助。

1 个答案:

答案 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
    }

 );