2009-10-15 33 views
3

我有這樣的自定義佈局:安卓:改變風格的時候集中

- LinearLayout 
    - FrameLayout 
     - ImageView 
    - TextView 

這種佈局發生反應,點擊(使用LinearLayout.setOnClickListener())和佈局XML文件中使用android:focusable="true"由可獲得焦點事件。如果你使用的是觸摸屏,這一切都可以正常工作,但我正在考慮那些不使用觸摸屏的用戶,他們更喜歡導航鍵,或者甚至沒有觸摸屏。這些用戶將無法看到ViewGroup何時被聚焦(儘管可以使用鍵盤聚焦)。

我的問題是:如何在佈局時更改該佈局(我需要更改ImageViewandroid:background)?我想我可以使用LinearLayout.setOnFocusChangeListener(),但我想也許有更好的方法,只使用XML文件。

回答

6

給東西(LinearLayout?)一個背景圖片,它是一個StateListDrawable(可繪製XML和<selector>根元素)。也許在正常情況下使用透明顏色,但在android:focused="true"的情況下使用其他顏色。然後,當它獲得焦點時,背景會自動改變。

+0

我正在研究,我只是碰到了StateListDrawable我自己。雖然它的功能與我想要的完全相同,但並不完美。我想在LinearLayout焦點時更改ImageView的背景,並且我無法使用StateListDrawable來完成此操作。 +1,指出這個非常有用的課程! – Felix 2009-10-15 15:09:00

+0

另外,我在哪裏定義StateListDrawables?我是否可以在drawable /目錄下創建XML文件? – Felix 2009-10-15 15:10:35