2

私はAPIリクエストから得た応答に従って動的に移入するナビゲーションビューを持っています。だから私はメニュー項目の設計のほとんどをプログラムで行う必要があります。show NavigationView MenuItemsホロインジケータプログラムで

私の目的は、メニュー項目が、この絵のように、チェックされている場合、左側にインジケータ(黄色の縦ストリップ)を追加することです。ここでは

enter image description here

は、今までの私のコードです:

の.xml

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:itemIconTint="@drawable/drawer_item" 
    app:itemTextColor="@drawable/drawer_item" 
    app:itemBackground="@drawable/background_item"/> 

の.java

for (SettingsMenuItem item : items) { 

       if (!item.getMenu().isEmpty()) { 

         span = new SpannableString(subItem.getTitle()); 
         span.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), 0, span.length(), 0); 

         menu.add(NONE,NONE, items.indexOf(subItem), span).setCheckable(true).setChecked(false);; 
        } 
} 
     menu.getItem(selectedItemID).setChecked(true); 

答えて

1

<View 
    android:layout_width="5dp" 
    android:layout_height="match_parent" 
    android:background="@color/yellow"/> 

よう 黄色の垂直ストリップのカスタムビューを作成してみてくださいと親左に重力を設定します。また、クリックされたメニューの状態をSharedPreferenceのどこかに維持して、クリックされたメニューの状態を復元する。

+0

お寄せいただきありがとうございます。メニュー項目にこのビューをプログラムで追加するにはどうすればよいですか?重力を左に設定する方法は? – M20

+1

あなたが言及したスクリーンショットの中に複数のものがあるので、私はSettingsMenuItemの代わりにカスタム引き出しレイアウトを作成することを提案します。カスタム引き出しレイアウトを作成するには、NavigationViewを完全に削除し、スクリーンショットで説明した上記のレイアウトを作成し、コントロールをコードの背後に初期化します。これは明らかです。私はいくつかのコードスニペットを投稿することを知らせていない場合 –

関連する問題