最近自学着做东西,需要做一个效果,就是我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 的代码

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

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

Android 实现子View的状态跟随父容器的状态的更多相关文章

  1. 在Android中将子View的坐标转换为父View的坐标

    在Android中,我们有时候可能会将子View的坐标转换为父View中的坐标.感觉很有用,分享给大家. 在Launcher中有这么一段代码可以完成这项工作.  public float getDes ...

  2. Sprite子节点透明度不能跟随父节点变化的问题求解(转)

    原出处忘记了. [已解决]Sprite子节点透明度不能跟随父节点变化的问题求解 自己封装了一个按钮控件,点击的时候封装了一些动作,其中有透明度的变化. 当点击发生的时候,Sprite本体执行正常,但是 ...

  3. html布局-子div浮动后,父容器撑不开解决

    文章:子div撑不开父div的几种解决办法: 1,可以在所有子元素后增加<div style="clear:both;"></div> 2,给父容器增加样式 ...

  4. View事件传递之父View和子View之间的那点事

    Android事件传递流程在网上可以找到很多资料,FrameWork层输入事件和消费事件,可以参考: Touch事件派发过程详解 这篇blog阐述了底层是如何处理屏幕输,并往上传递的.Touch事件传 ...

  5. Android学习笔记View的工作原理

    自定义View,也可以称为自定义控件,通过自定义View可以使得控件实现各种定制的效果. 实现自定义View,需要掌握View的底层工作原理,比如View的测量过程.布局流程以及绘制流程,除此之外,还 ...

  6. Android自己定义view之measure、layout、draw三大流程

    自己定义view之measure.layout.draw三大流程 一个view要显示出来.须要经过測量.布局和绘制这三个过程,本章就这三个流程具体探讨一下.View的三大流程具体分析起来比較复杂,本文 ...

  7. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  8. winform子容器随父容器的变化设置

    在设计winform窗体时,因为会很少去调整窗体的大小,这时子控件就会出很尴尬的情况, 通过查看空间的属性,发现有这样两个属性,dock和anchor.这里主要说anchor,官方 解释没太看懂,我的 ...

  9. Android Touch事件之一:Touch事件在父ViewGroup和子View之间的传递篇

    2015-11-26 17:00:22 前言:Android的Touch事件传递和View的实现紧密相连,因此理解Touch事件的传递,有助于我们更好的理解View的工作原理. 1. 几个重要的方法: ...

随机推荐

  1. django中添加用户

    在django中添加用户,直接在auth_user表中添加会有问题,因为这里密码是加密的,可以通过manage.py shell加入 创建User: 1 >>> from djang ...

  2. NOIP2007 守望者的逃离-DP

    https://vijos.org/p/1431 描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守 ...

  3. Dinic

    BFS构造分层网络,DFS多路增广 #include<iostream> #include<vector> #include<queue> #include< ...

  4. 华为OJ平台——超长正整数相加

    题目描述: 请设计一个算法完成两个超长正整数的加法. 输入 输入两个字符串数字 输出 输出相加后的结果,string型 样例输入 99999999999999999999999999999999999 ...

  5. JS 点击按钮后弹出遮罩层,有关闭按钮

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...

  6. landsat8简介

    简介 2013年2月11号,NASA 成功发射了 Landsat 8 卫星,为走过了四十年辉煌岁月的 Landsat 计划重新注入新鲜血液.LandSat- 8上携带有两个主要载荷:OLI和TIRS. ...

  7. 百度地图API示例之文本标注

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  8. [python 2.7.5] 实现配置文件的读写

    import ConfigParser config = ConfigParser.RawConfigParser() # When adding sections or items, add the ...

  9. 使用Git上传本地项目代码到github

    前提:(1)ssh密钥(让本地与git链接) &  (2)装好gitbash 1.git中创建好库 2.文件夹中输入:git init (出现隐藏的.git文件) 3.git remote a ...

  10. UML类图与类的关系详解

    摘自:http://www.uml.org.cn/oobject/201104212.asp UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类 ...