动态改变LinearLayout的背景

背景:四个LinearLayout,每个LinearLayout里都包含textView\EditText等控件;实现每个editText获得焦点的时候      LinearLayout的背景状态也响应地改变;


实现:1、LinearLayout需要的不同的背景状态用单独的selector保存,设置默认状态和改变状态;

         2、使用addStatesFromChildren来改变LinearLayout的状态;系统自动根据LinearLayout的状态来改变                   LinearLayout的背景状态;

总结:我是在实战项目中遇到的这个问题的,当时是想改变LinearLayout的背景图片来标记用户当前选中的是哪个editText,显示突出效果;但是在网上找了很久都没有找到相关实现方法;自己也尝试用代码来实现,但是LinearLayout的状态在代码中标记好像也不管用;终于在http://blog.csdn.net/eyu8874521/article/details/8076955中找到了addStatesFromChildren的实现方法,然后试了就成功了。

addStatesFromChildren在API中的解释是Sets whether this ViewGroup's drawable states also include its children's drawable states.个人理解是,父控件的状态随子控件的状态改变而改变;所以我们可以使用addStatesFromChildren来控制布局管理器的状态,从而改变布局管理器的背景图片。

动态改变LinearLayout的背景_第1张图片

动态改变LinearLayout的背景_第2张图片

你可能感兴趣的:(背景,EditText,LinearLayout,布局管理器)