2013-04-21 50 views
0

我想在按下時更改自定義視圖的背景顏色,並在視圖丟失「按下狀態」時稍微「移除」此背景顏色。然而,我GOOGLE了這個問題,並找到了一個使用StateListDrawable的解決方案。我已經在我的customView(它以編程方式添加到ListView)中試過這個,但只是「正常顏色」被設置爲我的視圖。當我觸摸視圖時,什麼都沒有發生。出了什麼問題?觸摸時更改自定義視圖的背景

選擇XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_pressed="true" 
     android:drawable="@color/bckgr" /> 
    <item 
     android:drawable="@color/transparent" /> 
</selector> 

我的自定義視圖的構造函數中:

this.setBackgroundResource(R.drawable.list_item_bckgr); 

回答

0

你必須申請你backgroundViewAdapter填滿(視圖您getView執行正在返回)不到ListView自我

0

嘿你做在構造函數中視圖focussable和點擊,使用:

setClickable(true); 
setFocusable(true); 

可能是你的觀點並沒有得到焦點。

+0

這工作得很好:) THX – user2224350 2013-04-21 08:59:18

+0

高興,這有助於更多的細節:) – 2013-04-21 15:55:09

0

您需要設置OnTouchListener來處理觸摸事件。觸摸視圖時,更改背景,並且當視圖「未觸摸」時,將背景更改回原始視圖。

要設置偵聽器,請使用您創建的OnTouchListener調用自定義視圖的View.setOnTouchListener()函數來處理這些事件。

下面是引用OnTouchListener:

http://developer.android.com/reference/android/view/View.OnTouchListener.html

0

我假設你有一個覆蓋方法的OnTouch()方法,我會做的就是創建一個instance variable(類VAR),將持有的圖像您希望將其作爲背景,並將其設置爲您的OnTouch()方法。然後,覆蓋您的OnDraw()方法,該方法將爲您提供canvas的參考,並使用canvas.DrawBitmap()繪製背景。

這個答案告訴您如何繪製bitmap Setting background image in a custom view