最火开源框架MVVMhabit
一. 准备工作
二. 快速上手
三. 数据绑定
四. 其他
1、引用库
//底部tabBar
implementation('me.majiajie:pager-bottom-tab-strip:2.2.5') {
exclude group: 'com.android.support'
}
2、xml 设置标签 me.majiajie.pagerbottomtabstrip.PageBottomTabLayout
fragment也要用到FrameLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<!--fragment-->
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#F0F0F0" />
<!--tabBar-->
<me.majiajie.pagerbottomtabstrip.PageBottomTabLayout
android:id="@+id/pager_bottom_tab"
android:layout_width="match_parent"
android:layout_height="56dp"
app:elevation="8dp" />
</LinearLayout>
3、activity 初始化framgent相关代码,在onCreate中调用initData就行了
四个Fragment页面这里就不详细写了,创建类继承Fragment就行了
//其他代码...
private List<Fragment> mFragments;
private List<Fragment> mFragmentDatas;
//fragment切换是否刷新
private Boolean isCheck = true;
//初始化方法
public void initData() {
initFragment();
initBottomTab();
}
private void initFragment() {
mFragmentDatas = new ArrayList<>();
mFragmentDatas.add(new TabBar1Fragment());
mFragmentDatas.add(new TabBar2Fragment());
mFragmentDatas.add(new TabBar3Fragment());
mFragmentDatas.add(new TabBar4Fragment());
mFragments = new ArrayList<>();
for (int i = 0; i < mFragmentDatas.size(); i++) {
mFragments.add(null);
}
//默认选中第一个
addFragment(0);
}
private void initBottomTab() {
//初始化tabBar控件
NavigationController navigationController = binding.pagerBottomTab.material()
.addItem(R.mipmap.yingyong, "应用")
.addItem(R.mipmap.huanzhe, "工作")
.addItem(R.mipmap.xiaoxi_select, "消息")
.addItem(R.mipmap.wode_select, "我的")
.setDefaultColor(ContextCompat.getColor(this, R.color.black))
.setMessageNumberColor(ContextCompat.getColor(this, R.color.blue))
.setMessageBackgroundColor(ContextCompat.getColor(this, R.color.green))
.build();
//底部按钮的点击事件监听
navigationController.addTabItemSelectedListener(new OnTabItemSelectedListener() {
@Override
public void onSelected(int index, int old) {
addFragment(index);
}
@Override
public void onRepeat(int index) {
}
});
}
private void addFragment(int index) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//两种fragment加载方式,replace每次都初始化fragment;add只有第一次初始化
if (isCheck) {
mFragments.set(index, mFragmentDatas.get(index));
transaction.replace(R.id.frameLayout, mFragments.get(index));
} else {
if (mFragments.get(index) == null) {
mFragments.set(index, mFragmentDatas.get(index));
transaction.add(R.id.frameLayout, mFragments.get(index));
}
hideFragment(transaction);
transaction.show(mFragments.get(index));
}
transaction.commitAllowingStateLoss();
}
//隐藏所有的fragment
private void hideFragment(FragmentTransaction transaction) {
for (int i = 0; i < mFragmentDatas.size(); i++) {
if (mFragments.get(i) != null) {
transaction.hide(mFragments.get(i));
}
}
}
//其他代码...