Android Design风格组件之Bottom navigation

来源:互联网 发布:遗传算法的步骤 编辑:程序博客网 时间:2024/06/07 03:27

从com.android.support:design:25.1.0开始支持Bottom navigation

这里写图片描述

如何添加

1.在 build.gradle添加最新的design 和appcompat包

dependencies {      compile 'com.android.support:appcompat-v7:X.X.X'    compile 'com.android.support:design:X.X.X'    // where X.X.X version}

2.activity继承android.support.v7.app.AppCompatActivity

public class MainActivity extends AppCompatActivity {   ... }

3.在menu问加你声明navigation的选项

<menu xmlns:android="http://schemas.android.com/apk/res/android">      <item            android:id="@+id/recents"            android:title="Recents"            android:icon="@drawable/ic_history_24dp"/>    <item            android:id="@+id/favorites"            android:title="Favorites"            android:icon="@drawable/ic_favorite_24dp"/>    <item            android:id="@+id/nearby"            android:title="Nearby"            android:icon="@drawable/ic_place_24dp"/></menu>  

4.在layout.xml文件里引入BottomNavigationView

<android.support.design.widget.BottomNavigationView      android:id="@+id/bottomNavigationView"    android:layout_width="match_parent"    android:layout_height="wrap_content"    app:menu="@menu/bottom_navigation_menu"/>

如何设置风格

这里写图片描述

1.为navigation bar定义默认的颜色

<selector xmlns:android="http://schemas.android.com/apk/res/android">      <item android:state_checked="false" android:color="@color/pink"/>    <item android:color="@android:color/white"/></selector>  

2.为navigation bar items定义背景色

// res/drawable, to support devices lower then 21 API<selector xmlns:android="http://schemas.android.com/apk/res/android">      <item android:state_pressed="true" android:drawable="@android:color/white"/>    <item android:drawable="@android:color/transparent"/></selector>// res/drawable-v21 folder, for devices greater or equal then 21 API<ripple xmlns:android="http://schemas.android.com/apk/res/android"          android:color="@android:color/white"></ripple>  

3.定义风格文件style.xml

<style name="BottomNavigation">      <item name="android:background">@color/indigo</item>    <item name="itemBackground">@drawable/navigation_bar_item_bg</item>    <item name="itemIconTint">@color/navigation_bar_txt_color</item>    <item name="itemTextColor">@color/navigation_bar_txt_color</item>    <item name="paddingStart">@dimen/bottom_navigation_padding</item>    <item name="paddingEnd">@dimen/bottom_navigation_padding</item></style>  

4.在layout.xml中应用style

<android.support.design.widget.BottomNavigationView      android:id="@+id/bottomNavigationView"    android:layout_width="match_parent"    android:layout_height="wrap_content"    app:menu="@menu/bottom_navigation_menu"    style="@style/BottomNavigation"/>

获取选中项

BottomNavigationView bottomNavigationView;  // ...bottomNavigationView.setOnNavigationItemSelectedListener(new OnNavigationItemSelectedListener() {       @Override     public boolean onNavigationItemSelected(@NonNull MenuItem item) {         if (item.getItemId() == R.id.favorites) {             // on favorites clicked             return true;         }         return false;     }});

程序中选择item

BottomNavigationView navigationView;  // ...navigationView= (BottomNavigationView) findViewById(R.id.bottomNavigationView);  navigationView.getMenu().getItem(itemToSelect).setChecked(true);
注意:从design 25.1.0 开始支持.

获取选中的item

没有api可以get选中的item
但是有以下几种方法,可以get到。

1.从BottomNavigationView 得到menu,然后从中获取被选中的item

BottomNavigationView bottomNavigationView;  // ...int getSelectedItem() {      Menu menu = bottomNavigationView.getMenu();    for (int i = 0; i < menu.size(); i++) {        if (menu.getItem(i).isChecked()) {            return i;        }    }    return 0;}

2.添加selectedItem的全局变量。每次在程序中选中item,或OnNavigationItemSelected接收事件时,都更新它。

原创粉丝点击