您的位置:首页 > 其它

动态改变LinearLayout的背景

2013-08-23 00:00 127 查看
背景:四个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来控制布局管理器的状态,从而改变布局管理器的背景图片。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息