美文网首页
【Android】记一次点击事件失效排查

【Android】记一次点击事件失效排查

作者: littlefogcat | 来源:发表于2022-02-28 09:52 被阅读0次

    事情很简单,一个返回按钮设置了点击事件,但是无论如何都触发不了。

    布局也很简单,就是一个 LinearLayout 中,包含一个 TitleBar 和一个 RecyclerView:

    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <LinearLayout ...>
    
            <ImageView
                android:id="@+id/btnClose"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_margin="16dp" />
    
            <TextView .../>
        </LinearLayout>
    
        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
    

    首先排除了一些小白错误,确定了点击事件确实绑定上了,但是却无法点击。
    在网上搜索时,看到有人说到一种情况,就是按钮被上面的控件覆盖了,导致点击事件没有传递过来。
    但是,这个界面很简单啊,不可能存在被覆盖的情况吧?

    虽然感觉问题不大,但是还是点开了 Layout Inspector 查看了实时布局。
    不看不知道,一看吓一跳:

    actionbar
    原来真的有个 action_bar_container 覆盖在按钮的上方!这玩意儿是哪儿来的呢?看名字就知道是系统自带的 ActionBar,但是为啥他不显示?通过查看主题,发现了这么一句:
    <item name="actionBarStyle">@android:color/transparent</item>
    

    原来他是一个透明的 ActionBar?这也太坑了吧!

    找到问题就好解决了,直接隐藏了系统的 ActionBar 即可。

            if (getSupportActionBar() != null) {
                getSupportActionBar().hide();
            }
    

    相关文章

      网友评论

          本文标题:【Android】记一次点击事件失效排查

          本文链接:https://www.haomeiwen.com/subject/rnxlrrtx.html