0

customView が押されたときに背景色を変更し、ビューが「押された状態」を失ったときにこの背景色をわずかに「削除」したいと考えています。ただし、この質問をグーグルで調べたところ、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);
4

5 に答える 5

0

自分自身ではなくbackground、塗りつぶし( 実装が返すビュー)Viewに適用する必要がありますAdaptergetViewListView

于 2013-04-21T08:47:41.283 に答える
0

android:descendantFocusabilityで true に設定してみてくださいListView

于 2013-04-21T08:48:18.210 に答える
0

ビューをフォーカス可能かつクリック可能にしていますか?コンストラクターで使用します:

setClickable(true);
setFocusable(true);

ビューがフォーカスされていない可能性があります。

于 2013-04-21T08:49:40.860 に答える
0

OnTouchListenerタッチ イベントを処理するには、 を設定する必要があります。ビューがタッチされた場合は背景を変更し、ビューが「タッチされていない」場合は背景を元に戻します。

リスナーを設定するには、これらのイベントを処理するために作成した OnTouchListener を使用して、カスタム ビューの View.setOnTouchListener() 関数を呼び出します。

OnTouchListener への参照は次のとおりです。

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

于 2013-04-21T08:51:14.443 に答える
0

メソッドにオーバーライドメソッドがあると思います。私が行うことは、背景として使用したい画像を保持する (class var) をOnTouch()作成し、それをメソッドに設定することです。次に、への参照を提供するメソッドをオーバーライドし、 を使用して背景を描画します。instance variableOnTouch()OnDraw()canvascanvas.DrawBitmap()

この回答は、カスタムビューで設定の背景画像を描画する方法の詳細を示していますbitmap

于 2014-03-15T03:12:05.790 に答える