背景:四个LinearLayout,每一个LinearLayout里都包含textView\EditText等控件;实现每一个editText得到焦点的时候 LinearLayout的背景状态也响应地改变; 布局
实现:一、LinearLayout须要的不一样的背景状态用单独的selector保存,设置默认状态和改变状态; this
二、使用addStatesFromChildren来改变LinearLayout的状态;系统自动根据LinearLayout的状态来改变 LinearLayout的背景状态; .net
总结:我是在实战项目中遇到的这个问题的,当时是想改变LinearLayout的背景图片来标记用户当前选中的是哪一个editText,显示突出效果;可是在网上找了好久都没有找到相关实现方法;本身也尝试用代码来实现,可是LinearLayout的状态在代码中标记好像也无论用;终于在http://blog.csdn.net/eyu8874521/article/details/8076955中找到了addStatesFromChildren的实现方法,而后试了就成功了。 blog
addStatesFromChildren在API中的解释是Sets whether this ViewGroup's drawable states also include its children's drawable states.我的理解是,父控件的状态随子控件的状态改变而改变;因此咱们能够使用addStatesFromChildren来控制布局管理器的状态,从而改变布局管理器的背景图片。 图片