BottomNavigationView的使用(2019-05-14)

基本使用

1.引入依賴

  implementation 'com.android.support:design:28.0.0'

2.新建menu文件(在res下新建menu資源文件夾,然后為bottomnavigationview創(chuàng)建menu文件)

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/homepage"
          android:enabled="true"
      app:showAsAction="ifRoom"
      android:icon="@drawable/homepage"
      android:title="主頁(yè)"/>

    <item android:id="@+id/knowledge"
      android:enabled="true"
      app:showAsAction="ifRoom"
      android:icon="@drawable/homepage"
      android:title="知識(shí)體系"/>

    <item android:id="@+id/navigate"
      android:enabled="true"
      app:showAsAction="ifRoom"
      android:icon="@drawable/homepage"
      android:title="導(dǎo)航"/>

    <item android:id="@+id/wechat"
      android:enabled="true"
      app:showAsAction="ifRoom"
      android:icon="@drawable/homepage"
      android:title="公眾號(hào)"/>

    <item android:id="@+id/project"
      android:enabled="true"
      app:showAsAction="ifRoom"
      android:icon="@drawable/homepage"
      android:title="項(xiàng)目"/>


    </menu>

3.定義選中和非選中顏色(注意,這里使用的是android:color,當(dāng)時(shí)我使用的是android:drawable 怎么都實(shí)現(xiàn)不了想要的效果)

    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="false" android:color="@color/bottom_navigation_view_text_color_unchecked"/>
  <item android:state_checked="true" android:color="@color/bottom_navigation_view_text_color_checked"/>
</selector>
  1. 在布局文件中定義組件

     <android.support.design.widget.BottomNavigationView
       app:elevation="16dp"
       android:id="@+id/bnv_main"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="?android:windowBackground"
       app:labelVisibilityMode="labeled"
         app:itemTextColor="@drawable/bottom_navigation_view_color_selector"
       app:itemIconTint="@drawable/bottom_navigation_view_color_selector"
       app:layout_constraintBottom_toBottomOf="parent"
       app:menu="@menu/menu_bottom_navigation_view">
    
    
     </android.support.design.widget.BottomNavigationView>
    

實(shí)現(xiàn)不同的效果

1只有圖標(biāo)
只需要設(shè)置 labelVisibilityMode="unlabeled"

2 圖標(biāo)文字每一項(xiàng)都完全顯示 并且去除移動(dòng)動(dòng)畫
設(shè)置labelVisibilityMode="labeled"

3 固定字體大小(只需要在dimens文件中添加以下兩行就行了 )
方式:

  <?xml version="1.0" encoding="utf-8"?>
  <resources   xmlns:tools="http://schemas.android.com/tools">
    
<!--<dimen name="design_bottom_navigation_active_text_size">12sp</dimen>-->
<!--<dimen name="design_bottom_navigation_text_size">12sp</dimen>-->
</resources>

4.是指圖標(biāo)與label之間的間隔以及導(dǎo)航欄的高度
同樣是在dimens文件中

    <!-- icon與text間隔大小 -->
    <!--<dimen tools:override="true"         name="design_bottom_navigation_margin">20dp</dimen>-->
    <!-- 導(dǎo)航欄高度 -->
    <!--<dimen tools:override="true"   name="design_bottom_navigation_height">90dp</dimen>-->

5.去掉水波紋

  app:itemBackground="@null"

選中事件

 package com.zengqiang.wanandroid;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.FrameLayout;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {


@BindView(R.id.container)
FrameLayout mContainer;
@BindView(R.id.bnv_main)
BottomNavigationView mBnvMain;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);

    initBottomNavigationView();

}

private void initBottomNavigationView() {
    mBnvMain.setOnNavigationItemSelectedListener(item -> {

        switch (item.getItemId()) {
            case R.id.homepage:
                Toast.makeText(this, "homepage", Toast.LENGTH_SHORT).show();
                break;

            case R.id.knowledge:
                Toast.makeText(this, "knowledge", Toast.LENGTH_SHORT).show();
                break;

            case R.id.navigate:
                Toast.makeText(this, "navigate", Toast.LENGTH_SHORT).show();
                break;

            case R.id.project:
                Toast.makeText(this, "project", Toast.LENGTH_SHORT).show();
                break;

            case R.id.wechat:
                Toast.makeText(this, "wechat", Toast.LENGTH_SHORT).show();
                break;
        }

        return true;
    });


  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容