2016-07-11 53 views
0

我儘量讓水木清華這樣的:爲什麼不顯示徽章?

введите сюда описание изображения

爲了獲得這個結果,我用這個代碼:

我有我的NavigationView

<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_second" 
    app:menu="@menu/activity_third_drawer" /> 

我有菜單XML文件:

<?xml version="1.0" encoding="utf-8"?> 

<group android:checkableBehavior="single"> 

    <item 
     android:id="@+id/nav_inbox" 
     android:icon="@drawable/ic_mail_outline_white" 
     android:title="Inbox" 
     app:actionLayout="@layout/badge" /> 
</group> 

<item android:title="@string/about_app"> 
    <menu> 
     <item 
      android:id="@+id/nav_about" 
      android:icon="@drawable/ic_close_24dp" 
      android:title="@string/about1" /> 
    </menu> 
</item> 
</menu> 

我有我的badge XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:id="@+id/textMenuItemCount" 
    android:layout_width="wrap_content" 
    android:text="rrrr" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:textColor="@android:color/holo_blue_light" 
    android:textStyle="bold" 
    android:textSize="16sp" 
    android:alpha="0.6"/> 
</RelativeLayout> 

然後我嘗試設置2badge在我MainActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_mainsecond); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
    MenuItem item = navigationView.getMenu().findItem(R.id.nav_inbox); 
    MenuItemCompat.setActionView(item, R.layout.badge); 
    RelativeLayout notifCount = (RelativeLayout) MenuItemCompat.getActionView(item); 
    TextView tv = (TextView) notifCount.findViewById(R.id.textMenuItemCount); 
    tv.setText("2"); 
} 

,最終我什麼也沒得到。

enter image description here

我試圖調試,它告訴我一切正常。

enter image description here

請幫助我。我究竟做錯了什麼?

+0

請確認能見度。 –

+0

@SohailZahid我怎麼能做到這一點? –

+0

的setText( 「asdasd」)後';'還設置'setVisibility(0);' –

回答

0

最簡單的選項供你會爲你的DrawerLayout,而不是你的NavigationView提供自定義佈局的第二個孩子一個片段。它基本上看起來和像NavigationView一樣工作,但可以給你更多的定製。

關注Slidenerd教程這種方法。觀看所有影片獲得總理解:):

https://www.youtube.com/watch?v=zWpEh9k8i7Q

如果您仍想堅持用NavigationView,檢查出重複的問題基本上是你問什麼。它給出了另一種方法。

How to create a custom navigation drawer in android

0

嘗試使用這樣的事情。

TextView tv = (TextView) navigationView.getMenu().findItem(R.id.nav_inbox).getActionView().findViewById((R.id.textMenuItemCount); 
0

不要尋找和onCreate處理意見,onCreateonCreateView之前調用。相反,您應該參考onResume所有的視圖,在佈局適當充氣後調用。或者,在您將其轉到onCreate之前,您應該先查看設置。

+0

在我打開'NavigationDrawer'後,我試着調用這個方法,這意味着'view' 100%已經創建,然後我打開它,然後單擊按鈕來設置值並且什麼都不是 –