· 实现Slideshow比较简单的效果
image.pngNavigation drawer in an app like Gmail will have a badge or count value in its row element. Here is a simple way to add them.
Android Studio (latest version) will allow us to create ‘Helloworld’ apps with material design guidelines. While creating a new android project, choose “Navigation Drawer Activity”.(AS最新版本将允许我们使用材料设计指南创建“Helloworld”应用程序)
Studio will now create an Activity with a navigation drawer. Follow the steps below to add the badges.
第1步:将“actionViewClass”属性添加到navigation drawer menu
在使用导航抽屉创建“Hello world”应用程序后,在项目层次结构视图的“菜单”文件夹下查找文件“activity_main_drawer.xml”(即yourActivityName_drawer.xml)。
Identify the group item and add “app:actionViewClass=android.widget.TextView” as given below:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_camera"
android:icon="@drawable/ic_menu_camera"
android:title="Import" />
<item
android:id="@+id/nav_gallery"
app:actionViewClass="android.widget.TextView"
android:icon="@drawable/ic_menu_gallery"
android:title="Gallery" />
<item
android:id="@+id/nav_slideshow"
app:actionViewClass="android.widget.TextView"
android:icon="@drawable/ic_menu_slideshow"
android:title="Slideshow" />
</group>
</menu>
步骤2:声明Navigation Drawer menu item并使用badge值初始化item
In your main Activity, declare the menu item of the Navigation Drawer as given below
//Create these objects above OnCreate()of your main activity
TextView slideshow,gallery;
//These lines should be added in the OnCreate() of your main activity
gallery=(TextView) MenuItemCompat.getActionView(navigationView.getMenu().
findItem(R.id.nav_gallery));
slideshow=(TextView) MenuItemCompat.getActionView(navigationView.getMenu().
findItem(R.id.nav_slideshow));
//This method will initialize the count value
initializeCountDrawer();
initializeCountDrawer()可以在需要的地方调用。它还可用于更新navigation drawer menu item中的计数或badge值。
private void initializeCountDrawer(){
//Gravity property aligns the text
gallery.setGravity(Gravity.CENTER_VERTICAL);
gallery.setTypeface(null, Typeface.BOLD);
gallery.setTextColor(getResources().getColor(R.color.colorAccent));
gallery.setText("99+");
slideshow.setGravity(Gravity.CENTER_VERTICAL);
slideshow.setTypeface(null,Typeface.BOLD);
slideshow.setTextColor(getResources().getColor(R.color.colorAccent));
//count is added
slideshow.setText("7");
}
Dynamic badge values
如果需要动态标记值,例如更新API调用或SQLite数据库中的值,请创建可重用的方法并在Activity 的OnStart()或OnResume()方法上更新它。
完整的源代码可以在以下链接中找到: https://github.com/Hariofspades/NavigationDrawerLabel
· 实现小红点效果效果
image1.png1.写好小红点的布局文件,嵌套在线性布局中是因为在菜单中如果不match_parent的话布局会与顶边对齐,为了居中就再套一个线性布局;
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical">
<TextView
android:id="@+id/msg"
android:background="@drawable/shape_msg"
android:textColor="@android:color/white"
android:gravity="center"
android:layout_width="20dp"
android:layout_height="20dp"/>
</LinearLayout>
2.在menu.xml文件中添加如下代码(badge是小红点的布局文件)
app:actionLayout="@layout/badge"
比如要在gallery这个条目添加:
<item
app:actionLayout="@layout/badge"
android:id="@+id/nav_gallery"
android:icon="@drawable/ic_menu_gallery"
android:title="Gallery"/>
3.在代码中添加消息条数
gallery = (LinearLayout) navigationView.getMenu().findItem(R.id.nav_gallery).getActionView();
TextView msg= (TextView) gallery.findViewById(R.id.msg);
msg.setText("9");
网友评论