背景:四個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來控制佈局管理器的狀態,從而改變佈局管理器的背景圖片。 圖片