[解決済み] ListSelectorはリスト全体に適用されます。
質問
単純なリストがあり、リストセレクタがあります。
<ListView android:id="@+id/list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_below="@+id/round"
android:listSelector="#99000000" android:clickable="true" android:cacheColorHint="#00000000" android:background="#00000000">
</ListView>
android:listSelector="#99000000" が、選択された項目ではなく、リスト全体に "black alpha" の色が適用されていることがお分かりいただけると思います。
このような状態になりましたが、リスト全体はまだ黒くなっています。
::listview_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/list_normal" />
<item android:state_pressed="true"
android:drawable="@drawable/list_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/list_active" />
</selector>
::カラーズ.xml
<resources>
<drawable name="list_normal">#96FFFFFF</drawable>
<drawable name="list_active">#66000000</drawable>
<drawable name="list_pressed">#CA000000</drawable>
</resources>
::マイリストのxmlタグ
android:listSelector="@drawable/listview_background"
解決方法は?
私も同じような悩みを抱えていました。私はカスタムの背景画像を持っていますが、その背景画像のバリエーションを作るのは、すべての異なる状態を表現するのに面倒なので、避けたいのです。
つまり、フォーカスされたリスト項目の上に半透明のバーを重ね、ユーザーが "enter" キーなどをタップすると、より印象的でやや不透明な、押されたオーバーレイの色に点滅するようにしたいのです。
解決策は、listSelector 内で色を参照する @color や @drawable からは離れることでした。3x3 ピクセルの .png ファイルを 2 つ作成しました。それぞれガンマレイヤーで保存しました。私の場合、2つの同じ色をそれぞれGimpで混合し、カラーレイヤーに異なる透明度を持たせている。つまり、アイテムを選択すると25%の色のオーバーレイが表示され、それを押すと50%の色のpngが表示される。これらを bg_list_item_pressed.png と bg_list_item_highlighted.png として、drawable に配置しました。
そして、リストセレクタを設定しました。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected -->
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/bg_list_item_highlighted" /> <!-- @drawable/tab_focus -->
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/bg_list_item_pressed" /> <!-- @drawable/tab_press -->
</selector>
そして、ListViewにlistSelector属性をレイアウトxmlで追加しました。
android:listSelector="@drawable/list_selector"
android:drawSelectorOnTop="true"
これで思い通りに動作するようになりました。Dパッドで行を選択し、Enterでクリックすることも含めて。ハイライト表示と、その後に押す色を、あるべき姿に正確にすることができました。
関連
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】新しいAVDを作成すると、CPU/ABIフィールドに「システムイメージがインストールされていません」と表示される。
-
[解決済み】'dependencies' を '(groovy.lang.Closure)' に適用できない。)
-
[解決済み] Mockito lenient() を使用する場合
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】まだ警告が出る:設定 'compile' は時代遅れで 'implementation' に置き換わった。
-
[解決済み】Android ADB デバイスがオフラインで、コマンドを発行できない。
-
[解決済み】AndroidのSSL接続でトラストアンカーが見つからない
-
[解決済み】Android Studio AVD - Emulator: 終了コード 1 でプロセスが終了
-
[解決済み】onCreateOptionsMenu(Menu メニュー)とは何ですか?)
-
[解決済み】リストビューにonclicklistenerを追加する(android)
-
[解決済み】Android Studio。Android.support.design.widget.FloatingActionButton クラスを膨らませるのにエラーが発生する。
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Mockito lenient() を使用する場合
-
[解決済み] AndroidでBluetoothが有効かどうかのチェックに失敗する(REQUEST_ENABLE_BTを変数に解決できない)。