web-dev-qa-db-ja.com

マテリアルデザインドロワーのNavigationViewでアイテムの通知値を追加するにはどうすればよいですか?

私の質問は非常に単純です、 NavigationView for Material Design Drawer のようにアイテムの通知値を追加する方法は?

enter image description here

引き出しを定義するためのプロパティがメニュー項目にありますか?

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <group
        Android:checkableBehavior="single">

        <item
            Android:id="@+id/drawer_home"
            Android:checked="true"
            Android:icon="@drawable/ic_home_black_24dp"
            Android:title="@string/home"/>

        <item
            Android:id="@+id/drawer_favourite"
            Android:icon="@drawable/ic_favorite_black_24dp"
            Android:title="@string/favourite"/>
        ...

        <item
            Android:id="@+id/drawer_settings"
            Android:icon="@drawable/ic_settings_black_24dp"
            Android:title="@string/settings"/>

    </group>
</menu>
21
lopez.mikhael

これは、アクションビューを使用するAppCompat-V7のバージョン23のNavigationViewで可能です。 1.カウンターのレイアウトを作成します。 nav_drawer_counter.xml

<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:gravity="center_vertical"
    Android:textColor="@color/colorPrimary"/>
  1. menu/nav_drawer.xmlにカウンター値を表示する各アイテムからの参照を追加します(app名前空間を使用していることを確認してください)。

    <item 
        ...
        app:actionLayout="@layout/activity_main_nav_drawer_menu_counter"
        />
    
  2. 値をTextViewに設定するメソッドを追加します。例:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    ....
    setNavItemCount(R.id.nav_notifications, 10);
    }
    
    
    private void setNavItemCount(@IdRes int itemId, int count) {
    TextView view = (TextView) navigationView.getMenu().findItem(itemId).getActionView();
    view.setText(count > 0 ? String.valueOf(count) : null);
    }
    
13
Evans Mauta II

そうそう...そのカウンター値を変更することができます。

あなたが提供した画像から、あなたが使用しているのはライブに見えます Rudson Limaのマテリアルデザインナビゲーションドロワー

そのライブラリには、クラスNavigationLiveo内に関数public void setNewCounterValue(int drawerItemPosition, int counterValue);があります。

そのオブジェクトを適切に使用してこの関数を呼び出すことを願っています。

幸運を祈ります... :-)

5
Azim Ansari

元のプロジェクトのgithubでどのように行われたかを正確に確認する必要があります。

https://github.com/rudsonlive/NavigationDrawer-MaterialDesign/https://play.google.com/store/apps/details?id=br.liveo.navigationliveo ==

基本的に、ListViewの行のカスタムビューを作成し、それに応じて更新します。

1
thiagolr

これにはライブラリを使用できます。 MaterialNavigationDrawer または MaterialDrawer を試してください

0
user3704147

いくつかの調査から、いいえ、ドロワーに通知を追加する実際の方法がないことがわかりました。ただし、Developersの ナビゲーションドロワーの作成 チュートリアルに示されている例は、開くたびに再描画を強制する方法(およびメニューXMLシートを使用して再描画を実装する方法)を示しています。通知を追加する方法については詳しく説明していませんが、他のソースがあります。

このチュートリアル は、別の「ナビゲーションドロワーの作成方法」チュートリアルであり、通知ボタンに合わせてListViewアダプターをどのように適合させたかについての正確な詳細が追加されています。これはおそらくあなたが探しているものだと思います。

幸運を!それがお役に立てば幸いです。

0
Rose R.