3

のカスタム セレクターを作成しようとしていますNavigationViewが、効果がありません。これは私のコードです:

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view"
    android:layout_height="match_parent"
    android:layout_width="wrap_content"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header"
    app:menu="@menu/drawer_view"
    app:itemBackground="@drawable/state_list_drawer_background" />

セレクターはstate_list_drawer_background.xmlです。コードは次のとおりです。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Checked state -->
    <item android:drawable="@drawable/background_checked" android:state_checked="true" />
    <!-- This is the default background color -->
    <item android:drawable="@drawable/background_normal" />
</selector>

カスタム セレクターではなく、透明なセレクターが表示されます。次に、ここNavigationViewに記載されている制限を見つけました:

NavigationView の itemBackground 属性は、項目のチェック状態を正しく処理しません。どういうわけか、すべての項目が強調表示されているか、どれも強調表示されていません。これにより、この属性は基本的にほとんどのアプリで使用できなくなります。

ただし、一部の開発者はカスタム セレクターを設定できます。たとえば、ダーク テーマのtTorrentアプリです。彼らはどうやってそれを行うことができるのだろうか!

誰でもこの問題を解決するのを手伝ってもらえますか?

前もって感謝します。

4

2 に答える 2

1

https://code.google.com/p/android/issues/listでバグレポートを記入してください。

tTorrent がNavigationViewメイン メニューの実装に使用していないことは間違いありません。
独自のカスタム レイアウトを作成する方が簡単で柔軟だと思います。

于 2015-07-03T13:43:18.233 に答える
0

次のようにセレクターで色を定義する必要があります: inside:drawable/item_selector.xml

<item android:color="#8C9EFF" android:state_checked="true" />
<!-- This is the default text color -->
<item android:color="#FFFFFF" />

于 2016-02-25T14:09:09.427 に答える