Tint 著色器
優點:去除“無用”圖片,節省空間
配合BottomNavigationView,實作一個快速,簡潔的Tab欄,效果圖如下
傳統做法:Tab 切換,字體變色、圖片變色,至少給我提供八張圖,四張默認,四張選中,然后通過 selector 檔案設定
現在BottomNavigationView只需四張圖!!!


依賴(AndroidX)
implementation 'com.google.android.material:material:1.1.0-alpha01'
- 布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/fLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/nav_bottom_menu"
android:background="@color/bg" />
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_above="@+id/nav_bottom_menu"
android:background="#FFE1E0E0" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_bottom_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@null"
app:itemIconTint="@color/tint_selector_menu_color"
app:itemTextColor="@color/tint_selector_menu_color"
app:labelVisibilityMode="labeled"
app:menu="@menu/nav_bottom_menu" />
<com.makeramen.roundedimageview.RoundedImageView
android:layout_width="55dp"
android:layout_height="55dp"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:layout_marginBottom="12dp"
android:src="@drawable/ic_log"
app:riv_corner_radius="200dp" />
</RelativeLayout>
- 撰寫渲染顏色選擇器-tint_selector_menu_color
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/orange" android:state_checked="true" />
<item android:color="@color/black" />
</selector>
- menu 檔案中 icon-nav_bottom_menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/iv_home"
android:icon="@drawable/iv_home"
android:title="首頁" />
<item
android:id="@+id/iv_wechat"
android:icon="@drawable/iv_wechat"
android:title="視頻" />
<item
android:id="@+id/riv_script"
android:icon="@null"
android:title="@null" />
<item
android:id="@+id/iv_pipi"
android:icon="@drawable/iv_pipi"
android:title="電影" />
<item
android:id="@+id/iv_mine"
android:icon="@drawable/iv_mine"
android:title="我的" />
</menu>
- BottomNavigationView的點擊事件(這里配合Fragmen)
/* Menu顯示彩色圖示 */
//navBottomMenu.setItemIconTintList(null);
/* 導航欄點擊事件 */
navBottomMenu.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.iv_home: {
FragmentManager.startFragmentHome(Fragment_A.class);
return true;
}
case R.id.iv_wechat: {
FragmentManager.startFragmentHome(Fragment_B.class);
return true;
}
case R.id.iv_pipi: {
FragmentManager.startFragmentHome(Fragment_C.class);
return true;
}
case R.id.iv_mine: {
FragmentManager.startFragmentHome(Fragment_D.class);
return true;
}
default:
break;
}
return false;
}
});
BottomNavigationView實作的Tab欄,比自己以前寫的代碼更加簡潔明了!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/233515.html
標籤:其他
上一篇:XML布局嵌套多少層會導致OOM
