内部にボタンがあるリスト項目があります。
ボタンが表示されると、リスト項目はクリックできなくなります。再びクリックできるようにするために、ボタンをビューに置き換えました。問題は、リスト項目をクリックすると、ボタンが背景画像を変更することです (クリックした場合と同様)。この悪い動作をどのように回避できますか?
ありがとう
実際、素晴らしい説明を見つけました:http://android.cyrilmottier.com/?p=525
問題と解決策は非常によく説明されています。
質問に答える@Matroskaが提供するリンクの一部:
追加する必要があります
android:descendantFocusability="blocksDescendants"
ListView のアイテムのレイアウトを定義する親 ViewGroup に。
注: これにより、ハードウェア ボタンのある内側のボタンに集中できなくなります。(すみません、まだコメントできません)
これを試すことができます:
yourButton.setFocusable(false);
yourButton.setFocusableInTouchMode(false);
ビューのクリック動作を含む xml ファイルを作成できます。xml ファイル custom_button.xml (または任意の名前) を作成し、次のコードを入力します。
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Focused -->
<item android:state_focused="true" android:state_pressed="false" android:color="@color/black"/>
<!-- Pressed -->
<item android:state_focused="false" android:state_pressed="true" android:color="@color/black"/>
<!-- Focused+Pressed -->
<item android:state_focused="true" android:state_pressed="true" android:color="@color/black"/>
<!-- Disabled -->
<item android:state_enabled="false" android:color="@color/dark_grey_text"/>
<!-- Default -->
<item android:color="@color/white"/>
</selector>
その後、
android:color=""
に
android:drawable=""
そして、それらをドローアブル フォルダーにあるドローアブル リソースに割り当てます。次に、ビューを含むレイアウトの xml ファイルに次を追加します。
android:background="custom_button"