Android 选择器 selector用法

设置view点击后切换背景并且保留住选中状态应该怎么办?

1.在drawable下面新建文件bg_music_type

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/weeebot_background_red" android:state_pressed="true"/>
    <item android:drawable="@drawable/weeebot_background_red" android:state_selected="true"/>
    <item android:drawable="@drawable/weeebot_background" android:state_enabled="true"/>

</selector>

注意:

  • weeebot_background_red 是选中的时候的背景图片
  • weeebot_background 是未选中的时候的背景图片

在此处设置的是Fragment的背景,同理ImageView也需要设置

<FrameLayout
    android:id="@+id/test1"
    android:layout_width="53dp"
    android:layout_height="53dp"
    android:layout_marginEnd="30dp"
    android:clickable="true"
    android:background="@drawable/bg_music_type"
    android:onClick="onClick"
    android:focusable="true">

    <ImageView
        android:layout_width="34dp"
        android:layout_height="30.58dp"
        android:layout_gravity="center"
        android:focusable="false"
        android:clickable="false"
        android:background="@mipmap/music_laohu"/>

</FrameLayout>                       

注意一定要设置:

  • android:clickable="true"
  • android:focusable="true"

否则无效的

当然了上面的selector直接设置background即可。

然后就可以看到按钮在被点击的时候出现weeebotbackgroundred此背景的效果,不过怎么保留住这个点击效果呢??

需要在改布局的引用java代码里面设置这样的一句话


@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.test1:
                binding.test1.setSelected(true);
                break;
          }
    }

这样就大功告成了!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,864评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,498评论 2 59
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,851评论 0 17
  • RelativeLayout 第一类:属性值为true可false android:layout_centerHr...
    兀兀沙弥阅读 8,145评论 0 15
  • 挖井,必须在一个点挖的够深才可见水,如果,我们在这里挖点没水,换地再挖,再挖点没水,频繁变换地点,想要挖出...
    行动的橙z阅读 4,849评论 0 0