2016-07-11 59 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%已经创建,然后我打开它,然后单击按钮来设置值并且什么都不是 –