当前位置: 首页 > news >正文

Android 实现子View的状态跟随父容器的状态

      最近自学着做东西,需要做一个效果,就是我ListView的Item点击下或者选中的时候,我Item里面的各个组件的状态要和我Item的状态保持一直,这样我就可以用XML,去根据组件的不同状态去实现不同的效果。那么,我发现了XML的一条属性

< android:duplicateParentState="true" />

      这条属性是什么意思呢? 我个人根据字面理解为:(duplicate)复制(Parent)父母(State)状态-----即:复制父容器的状态,也就是说,这条属性是需要加在子组件上的,带有这个属性的子组件,他的状态会和父容器的状态一样。

 

l例如,这是我ListView的Item的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="100dp">
    <!-- android:duplicateParentState="true"  跟随父组件的状态变化而变化 -->
    <TextView
        android:id="@+id/tv_showBackColor_lvItem"
        android:layout_width="5dp"
        android:layout_height="match_parent"
        android:background="@drawable/tv_show_backcolor_lv_menu"
        android:duplicateParentState="true"/>
    <ImageView
        android:id="@+id/iv_showIcon_lvItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="20dp"
        android:layout_marginStart="20dp"
        android:duplicateParentState="true"/>
    <TextView
        android:id="@+id/tv_showInfo_lvItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试测试"
        android:textSize="20sp"
        android:layout_gravity="center_vertical"
        android:paddingTop="20dp"
        android:paddingBottom="20dp"
        android:textColor="@drawable/tv_show_textcolor_lv_menu"
        android:layout_marginLeft="30dp"
        android:duplicateParentState="true"/>
</LinearLayout>

 那么这时候,我的TextView和ImageView都带有这条属性,所以他们的状态就和我ListView的Item的状态一致,那么我就可以用XML去实现效果

         drawable 的代码

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector xmlns:android="http://schemas.android.com/apk/res/android">
3     <item android:state_focused="true" android:drawable="@color/tv_showColor_lv_menuLeft" /> <!-- focused -->
4     <item android:state_pressed="true" android:drawable="@color/tv_showColor_lv_menuLeft" /> <!-- pressed -->
5     <item android:state_selected="true" android:drawable="@color/tv_showColor_lv_menuLeft" /> <!-- pressed -->
6     <item android:drawable="@color/tv_showColor_lv_menuLeft_enable" /> <!-- default -->
7 </selector>

这个时候,就可以根据Item的状态  ,去让TextView和ImageView去根据不同的状态,曲线是不同的效果

转载于:https://www.cnblogs.com/819158327fan/p/4889500.html

相关文章:

  • RocketMQ异常
  • 规范 : loading display ui-view loading
  • Java多线程-新特征-锁(下)
  • struts2使用注解的时候遇到的问题
  • bootstrap弹出提示窗口功能
  • Grunt 插件使用汇总
  • 难题集锦
  • 如何在linux下实现mysql数据库每天自动备份
  • Servlet的学习之Session(1)
  • JavaScript学习06 JS事件对象
  • 关于在windows server 2008 上部署wampserver2.5部署的问题
  • C++复制构造函数和赋值符的区别
  • 正规化方程Normal Equations解析
  • Light OJ 1148
  • JSP的学习(6)——九大隐式对象及其out对象
  • [译] React v16.8: 含有Hooks的版本
  • 【译】理解JavaScript:new 关键字
  • canvas 五子棋游戏
  • CSS居中完全指南——构建CSS居中决策树
  • java小心机(3)| 浅析finalize()
  • jquery cookie
  • Js基础——数据类型之Null和Undefined
  • 技术:超级实用的电脑小技巧
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 最简单的无缝轮播
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #QT(智能家居界面-界面切换)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (2)nginx 安装、启停
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (接口自动化)Python3操作MySQL数据库
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • @Async注解的坑,小心
  • @Resource和@Autowired的区别
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [100天算法】-x 的平方根(day 61)
  • [1181]linux两台服务器之间传输文件和文件夹
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [Excel VBA]单元格区域引用方式的小结
  • [excel与dict] python 读取excel内容并放入字典、将字典内容写入 excel文件
  • [Geek Challenge 2023] web题解
  • [IE编程] WebBrowser控件中设置页面的缩放
  • [javaSE] 数据结构(二叉查找树-插入节点)