android:clickable="true"的怪异的用法

本文介绍了在Android UI开发中遇到的两个关于点击事件的问题及解决方案。一是子布局被点击时触发下层布局上的按钮事件;二是设置了背景选择器的TextView点击后背景不变化。文中给出了具体的解决方法。

这个属性,以前在做Android界面UI的时候,出现过两次坑!

(ViewGroup代表LinearLayout等各种布局控件,View代表TestView等各种控件)


1.比如ViewGroup_A在ViewGroup_B之上,点A的时候,B下面如果有button同时会被点击到并触发事件

解决方法:就是在ViewGroup_A的XMl属性下面添加android:clickable="true",反正当时也比较菜,然后当时根本没注意到这么个属性。

(当时比较蠢的做法,我们设定了一个标志位,看见A的时候,设置B不能点。额,这种做法只能说明我们见识太短)


2.TextView的background设置一个selector,点击TextView的时候,背景却没有变化!

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape>
            <solid android:color="#40abdc" />

            <corners android:radius="5dp" />
        </shape>
    </item>

    <item>
        <shape>
            <solid android:color="#1298d6" />

            <corners android:radius="5dp" />
        </shape>
    </item>

</selector>


当时自己是这么写的,本来以为TestView可能没这个属性,然后百度了一下,发现有人又在TestView的XML里面添加了一个android:clickable="true",然后就成功了。


目前我遇到这上面两种,难以知道要添加android:clickable="true"的情况,今天第二次遇到,所以把这个写下来。


大神看到了,请补充,谢谢。




<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/animal_bg" android:padding="16dp"> <GridLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:columnCount="4" android:rowCount="2" android:useDefaultMargins="false" android:gap="8dp"> <!-- 第1行 --> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/five" android:clickable="true" android:focusable="true" /> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/one" android:clickable="true" android:focusable="true" /> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/two" android:clickable="true" android:focusable="true" /> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/two" android:clickable="true" android:focusable="true" /> <!-- 第2行 --> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/five" android:clickable="true" android:focusable="true" /> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/one" android:clickable="true" android:focusable="true" /> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/two" android:clickable="true" android:focusable="true" /> <ImageView android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/five" android:clickable="true" android:focusable="true" /> </GridLayout> </LinearLayout>
最新发布
11-15
仍然是椭圆形 完整代码:<?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/background_gray"> <!--背景--> <ImageView android:id="@+id/background_on" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/on" android:visibility="visible" /> <!-- 顶部杂项--> <ImageButton android:layout_width="24dp" android:layout_height="24dp" android:layout_margin="16dp" android:background="@android:color/transparent" android:scaleType="centerCrop" android:src="@drawable/back" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="16dp" android:text="Smart Lamp" android:textSize="20dp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="46.5dp" > <ImageView android:layout_width="16dp" android:layout_height="16dp" android:layout_gravity="center_vertical" android:src="@drawable/location" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="4dp" android:text="Bedroom" android:textSize="16dp" /> </LinearLayout> <ImageButton android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="end" android:layout_margin="16dp" android:background="@android:color/transparent" android:scaleType="fitCenter" android:src="@drawable/setting" /> <!-- 按钮组--> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="89dp" android:paddingStart="22dp" android:paddingEnd="22dp"> <com.google.android.material.button.MaterialButton android:id="@+id/circularButton" android:layout_width="35dp" android:layout_height="35dp" android:minWidth="35dp" android:minHeight="35dp" android:backgroundTint="#4CAF50" app:cornerRadius="17.5dp" app:strokeColor="@android:color/white" app:strokeWidth="1dp" app:rippleColor="@android:color/transparent" android:clickable="false" android:enabled="false" android:focusable="false" android:contentDescription="圆形绿色按钮" /> </LinearLayout> <!--灯泡背景--> <ImageView android:id="@+id/imageView" android:layout_width="180dp" android:layout_height="244dp" android:layout_gravity="center_horizontal" android:layout_marginTop="207dp" android:src="@drawable/bulbbottom" /> <!--滑动图层--> <ImageView android:id="@+id/lampImageView" android:layout_width="180dp" android:layout_height="244dp" android:layout_gravity="center_horizontal" android:layout_marginTop="190dp" android:adjustViewBounds="true" android:scaleType="centerInside" android:src="@drawable/clip_bulb" /> <TextView android:id="@+id/percentText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="167dp" android:text="0%" android:textColor="#000" android:textSize="18sp" /> <!--灯泡底座--> <ImageView android:layout_width="180dp" android:layout_height="658dp" android:layout_gravity="center_horizontal" android:src="@drawable/bulbonbottom" app:layout_anchor="@+id/background_on" app:layout_anchorGravity="center" /> <!--开关按钮--> <ImageButton android:id="@+id/switch_button" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center_horizontal" android:layout_marginTop="476dp" android:background="@android:color/transparent" android:scaleType="centerInside" android:src="@drawable/switchselector" /> <!--隐藏栏开关--> <!-- <LinearLayout--> <!-- android:layout_width="match_parent"--> <!-- android:layout_height="wrap_content"--> <!-- android:layout_marginTop="60dp"--> <!-- android:gravity="center"--> <!-- android:orientation="vertical">--> <!-- <Button--> <!-- android:id="@+id/btn_bottom_sheet"--> <!-- android:layout_width="wrap_content"--> <!-- android:layout_height="wrap_content"--> <!-- android:layout_marginTop="32dp"--> <!-- android:text="BottomSheet"--> <!-- android:textAllCaps="false" />--> </LinearLayout> <!--隐藏toolbar--> <LinearLayout android:id="@+id/ll_bottom_sheet" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" app:behavior_peekHeight="110dp" app:layout_behavior="@string/bottom_sheet_behavior"> <ImageView android:id="@+id/pull" android:layout_width="match_parent" android:layout_height="30dp" android:background="@color/white" android:clickable="false" android:focusable="false" android:gravity="center" android:paddingTop="15dp" android:src="@drawable/pullselector" /> <TextView android:layout_width="match_parent" android:layout_height="80dp" android:background="@color/white" android:gravity="center" android:text="c" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="80dp" android:background="@android:color/holo_orange_dark" android:gravity="center" android:text="b" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="80dp" android:background="@android:color/holo_green_light" android:gravity="center" android:text="c" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="80dp" android:background="@android:color/holo_orange_dark" android:gravity="center" android:text="b" android:textSize="20sp" /> <TextView android:layout_width="match_parent" android:layout_height="80dp" android:background="@android:color/holo_orange_light" android:gravity="center" android:text="c" android:textSize="20sp" /> </LinearLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>
08-20
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一休日记

csdn打赏扣费20点,这

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值