BottomNavigationBar使用
引入依賴:
compile 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'
xml佈局中使用:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<com.ashokvarma.bottomnavigation.BottomNavigationBar
android:id="@+id/bottom_navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
</com.ashokvarma.bottomnavigation.BottomNavigationBar>
</FrameLayout>
java程式碼:
package com.picc.mcp.lifemobile.material;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.ashokvarma.bottomnavigation.BottomNavigationBar;
import com.ashokvarma.bottomnavigation.BottomNavigationItem;
import com.ashokvarma.bottomnavigation.TextBadgeItem;
import com.picc.mcp.lifemobile.R;
import com.picc.mcp.lifemobile.fragment.FindFragment;
import com.picc.mcp.lifemobile.fragment.HomePageFragment;
import com.picc.mcp.lifemobile.fragment.MeFragment;
import com.picc.mcp.lifemobile.fragment.ProductFragment;
import butterknife.BindView;
import butterknife.ButterKnife;
;
/**
* Created by fengxing on 2018/5/25.
* https://github.com/Ashok-Varma/BottomNavigation 專案中使用
* <p>
* Material風格底部導航欄
* https://github.com/aurelhubert/ahbottomnavigation也很好用的
*/
public class MaterialBottomNavigationBarActivity extends AppCompatActivity {
private static final String TAG = MaterialBottomNavigationBarActivity.class.getSimpleName();
private int[] mDrawables = {R.drawable.home_page_black, R.drawable.icons8_compass_96, R.drawable.icons8_product_96, R.drawable.icons8_user_96};
private int[] mDrawableStrs = {R.string.home_page, R.string.find, R.string.product, R.string.me};
int[] modes = {BottomNavigationBar.MODE_DEFAULT, BottomNavigationBar.MODE_FIXED, BottomNavigationBar.MODE_FIXED_NO_TITLE, BottomNavigationBar.MODE_SHIFTING, BottomNavigationBar.MODE_SHIFTING_NO_TITLE};
int[] backgrounds = {BottomNavigationBar.BACKGROUND_STYLE_DEFAULT, BottomNavigationBar.BACKGROUND_STYLE_RIPPLE, BottomNavigationBar.BACKGROUND_STYLE_STATIC};
private int mode_position = 0;
@BindView(R.id.bottom_navigation_bar)
BottomNavigationBar bottomNavigationBar;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.material_bottom_navigation_bar);
ButterKnife.bind(this);
bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
bottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_RIPPLE);
TextBadgeItem textBadgeItem = new TextBadgeItem();
textBadgeItem.setText("99");
bottomNavigationBar.
addItem(new BottomNavigationItem(mDrawables[0], mDrawableStrs[0]).setActiveColorResource(R.color.chocolate).setBadgeItem(textBadgeItem))
.addItem(new BottomNavigationItem(mDrawables[1], mDrawableStrs[1]).setActiveColorResource(R.color.indigo))
.addItem(new BottomNavigationItem(mDrawables[2], mDrawableStrs[2]).setActiveColorResource(R.color.darkmagenta))
.addItem(new BottomNavigationItem(mDrawables[3], mDrawableStrs[3]).setActiveColorResource(R.color.palegreen))
.setFirstSelectedPosition(0)
.initialise();
setDefaultFragment();
bottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {
@Override
public void onTabSelected(int position) {
Log.d(TAG, "onTabSelected: " + position);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
switch (position) {
case 0:
HomePageFragment homePageFragment = HomePageFragment.newInstance();
transaction.replace(R.id.frame_container, homePageFragment);
break;
case 1:
FindFragment findFragment = FindFragment.newInstance();
transaction.replace(R.id.frame_container, findFragment);
break;
case 2:
ProductFragment productFragment = ProductFragment.newInstance();
transaction.replace(R.id.frame_container, productFragment);
break;
case 3:
MeFragment meFragment = MeFragment.newInstance();
transaction.replace(R.id.frame_container, meFragment);
break;
}
transaction.commit();
}
@Override
public void onTabUnselected(int position) {
Log.d(TAG, "onTabUnselected: " + position);
}
@Override
public void onTabReselected(int position) {
Log.d(TAG, "onTabReselected: " + position);
}
});
}
private void setDefaultFragment() {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.frame_container, HomePageFragment.newInstance())
.commit();
}
}
簡單粗暴明瞭,不需要仔細說明。
最後貼上Gif:
設定mode和background。慢慢除錯吧。
相關文章
- Flutter: BottomNavigationBar + PageView 翻頁時崩潰FlutterNavigationView
- Flutter 底部導航——BottomNavigationBar | 掘金技術徵文FlutterNavigation
- Flutter 基礎(六)Material 元件之 BottomNavigationBar、TabBar、DrawerFlutter元件NavigationtabBar
- Flutter基礎(六)Material元件之BottomNavigationBar、TabBar、DrawerFlutter元件NavigationtabBar
- 線上直播系統原始碼,自定義底部 BottomNavigationBar原始碼Navigation
- flutter之從零開始搭建(一)之 BottomNavigationBarFlutterNavigation
- Flutter 解決系統BottomNavigationBar的水波紋問題FlutterNavigation
- Flutter 系列文章:Flutter BottomNavigationBar 控制元件介紹FlutterNavigation控制元件
- Material Design 控制元件知識梳理(7) BottomNavigationBarMaterial Design控制元件Navigation
- laravel使用EasyWeChat 使用Laravel
- 使用FTP限制使用者FTP
- 配置vsftpd匿名使用服務,個人使用者使用以及虛擬使用者使用配置細節!FTP
- Laravel passport 多端使用者使用LaravelPassport
- 使用 CSS 追蹤使用者CSS
- mongodb使用者與角色使用MongoDB
- RecyclerView使用指南(四)—— 使用ItemDecorationView
- RecyclerView使用指南(一)—— 基本使用View
- 使用dwebsocket在Django中使用WebsocketWebDjango
- 限制使用者使用session數Session
- 使用Index提示 強制使用索引Index索引
- ImageJ使用教程(一):開始使用
- winscp使用教程多使用者,winscp使用教程多使用者,教程詳情
- vi/vim使用進階: 在VIM中使用GDB除錯 – 使用vimgdb除錯
- 使用jquery和使用框架的區別jQuery框架
- Docker 使用者操作使用說明Docker
- 儘量使用 useReducer,不要使用 useStateuseReducer
- PyCharm使用技巧(六):Regullar Expressions的使用PyCharmExpress
- 使用Bootstrap tab頁切換的使用boot
- Urllib庫的使用一---基本使用
- 使用PyCharm引入需要使用的包PyCharm
- 使用 JWT 認證使用者身份JWT
- 使用者授權,策略的使用
- 使用普通使用者執行 dockerDocker
- 熟練使用使用jQuery Promise (Deferred)jQueryPromise
- mongoDB使用詳解(在node中使用)MongoDB
- 使用Git管理專案 使用總結Git
- Scrapy框架的使用之Scrapyrt的使用框架
- openfire使用自定義使用者表