Fragment+Tablayout + BottomTabBar雙導航欄實現
https://mp.csdn.net/postedit
點選開啟連結.可以打賞一下或者加個關注
//底部導航
compile 'com.hjm:BottomTabBar:1.1.1'
//tablayout
implementation 'com.android.support:design:26.+'
compile 'com.android.support:support-v4:26.+'
//控制元件佈局(佈局是在實現底部導航欄的類佈局裡)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" tools:context="com.month1.MainActivity"> <com.hjm.bottomtabbar.BottomTabBar android:id="@+id/bottom_tab_bar" android:layout_width="match_parent" android:layout_height="match_parent" > </com.hjm.bottomtabbar.BottomTabBar> </LinearLayout>
//Tablayout佈局是放在實現頂部導航欄類的佈局(暫定為A,下面有程式碼)
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager> </LinearLayout>
//框架佈局就是這樣了,然後是程式碼操作,在這裡我做的是抽取基類的操作
//抽取的是Activity的基類 import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; /** * Created by lenovo on 2018/4/25. */ public abstract class BaseActivity<T> extends AppCompatActivity { public T persenter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide(); setContentView(getViewID()); persenter = getPersenter(); initView(); initData(); } protected abstract int getViewID(); protected abstract void initView(); protected abstract void initData(); protected abstract T getPersenter(); }
//抽取Fragment的基類
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by lenovo on 2018/4/25.
*/
public abstract class BaseFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = LayoutInflater.from(getContext()).inflate(getLayoutID(),container,false);
initView(view);
initData();
return view;
}
protected abstract int getLayoutID();
protected abstract void initView(View view);
protected abstract void initData();
}
//基類抽取完成後先看MainActivity類
public class MainActivity extends BaseActivity{
//得到底部導航的控制元件並操作
private BottomTabBar bottomTabBar;
@Override
protected int getViewID() {
return R.layout.activity_main;
}
@Override
protected void initView() {
bottomTabBar= findViewById(R.id.bottom_tab_bar);
}
@Override
protected Object getPersenter() {
return null;
}
@Override
protected void initData() {
bottomTabBar.init(getSupportFragmentManager())
.setImgSize(50,50)
.setFontSize(8)
.setTabPadding(4,6,10)
.setChangeColor(Color.RED, Color.DKGRAY)
//fragment看下面的模板
.addTabItem("首頁",R.mipmap.a, OneFragment.class)
.addTabItem("優惠",R.mipmap.b, TwoFragment.class)
.addTabItem("分類",R.mipmap.c, TreeFragment.class)
.addTabItem("我的",R.mipmap.d, ForFragment.class)
.isShowDivider(false)
.setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
@Override
public void onTabChange(int position, String name) {
}
});
}
}
//實現底部導航的佈局就完成了(Fragment類大家就給大家一個模板,其他的Fragment類也一下),同時也實現了頂部導航
public class OneFragment extends BaseFragment {
private String[] titles = {"頁面1", "頁面2"};
private TabLayout tablayout;
private ViewPager viewpager;
private List<Fragment> fragments;
private MyAdapter adapter;
@Override
protected int getLayoutID() {
return R.layout.layout_one;
}
@Override
protected void initView(View view) {
tablayout = view.findViewById(R.id.tablayout);
viewpager = view.findViewById(R.id.viewpager);
//頁面,資料來源
fragments = new ArrayList<>();
fragments.add(new OneFragment1());
fragments.add(new OneFragment2());
//ViewPager的介面卡
adapter = new MyAdapter(getActivity().getSupportFragmentManager());
viewpager.setAdapter(adapter);
//繫結
tablayout.setupWithViewPager(viewpager);
}
@Override
protected void initData() {
}
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
//重寫這個方法,將設定每個Tab的標題
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
}
//頂部航的類
OneFragment1 ,它是在OneFragment中的
public class OneFragment1 extends BaseFragment {
@Override
protected int getLayoutID() {
return R.layout.layoutone1;
}
@Override
protected void initView(View view) {
}
@Override
protected void initData() {
}
}
相關推薦
Fragment+Tablayout + BottomTabBar雙導航欄實現
https://mp.csdn.net/postedit 點選開啟連結.可以打賞一下或者加個關注 //底部導航 compile 'com.hjm:BottomTabBar:1.1.1' //tablayout implementatio
底部導航欄實現頁面的切換(一):Fragment + LinearLayout + TextView
Fragment + LinearLayout + TextView 實現底部導航欄的切換(一) 知識點 先看效果圖: 專案結構圖: 實現邏輯: 頂部是Linea
導航欄實現
批次 input ren fix isp -- 遮罩 position 刪除 導航欄實現之滾動條,本博客的滾動條的其中一部分細節就是這個 <style> .greyBox{position: fixed;top: 0;left: 0;width:
android4.4以上沉浸式狀態列和導航欄實現以及Bar的其他管理
自從android4.4開始,android手機狀態列再也不是一成黑的時代,之前叫做變色龍,miui6釋出會把他叫做沉浸式,之後大家就自然而然的接受了沉浸式這個名稱,其實實際應該叫做Translucent Bar,即為透明狀態列。 沉浸式實現原理其實是使整個activity佈局延伸到整個螢幕,然
Android 養成記-1--1.2 導航欄實現
先來幾張效果圖,看圖說話: 側邊欄 底部導航欄: 1 側邊導航欄實現 側邊導航欄主要是採用android 的佈局layout 來實現: 1) 在專案目錄下新建 wiget 目錄,新增NoSlideDrawerLayout.java
Android底部導航欄實現(二)之RadioGroup
這裡簡單記錄一下Android底部導航欄通過RadioGroup+Fragment的實現。 這裡寫圖片描述 佈局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:and
iOS逆向之分析微信導航欄實現
最近需要實現微信的毛玻璃導航欄效果,嘗試了各種方式後還是有點差別,這在追求完美的設計師眼裡是絕不能忍的,於是只好“看看”原作是怎麼實現的。在逆向分析了微信的實現後,發現微信的實現十分特殊,文末會告訴大家答案:) 環境準備 一臺越獄裝置 OpenSSH 外掛 Cycript 外
Android沉浸式狀態列及導航欄實現
Android在4.4版本以後開始出現狀態列及導航欄透明化 實現程式碼如下 If (Build.Version.Sdk_Int >= Build.Version_Codes.Kitkat)
Fragment+ViewPager實習頂部導航欄效果
閒話不多說,先上效果圖 可以看到我們要實現的效果有兩個: 1.滑動ViewPager的時候,頂部的黃色橫條跟著一起滑動。當滑動完畢的時候,ViewPager對應的標題的顏色發生改變。 2.當點選一個標題的時候,ViewPager顯示對應的Fragment,然後顏色也跟著改
樓層導航欄實現
//點選回到當前樓層aNav.click(function () { var t = aDiv.eq($(this).index()).offset().top; $('body,html').animate({ "scrollTop": t,
Android design包自定義tablayout的底部導航欄
以前做專案大多用的radiobutton,今天用tablayout來做一個tab切換頁面的的效果 實現的效果就是類似QQ.微信的頁面間(也就是Fragment間)的切換.如圖: 佈局只要一個tablayout <android.support.d
QT之導航欄實現
有道詞典大家一定用過,今天要分享的就是類似與有道詞典側邊導航欄的做法(PS:有道詞典 用的不是QT技術實現的 而是 Hex技術 點選檢視詳情) 上圖就是有道詞典的導航欄 開始正題,如何用QT
Android (爭取做到)最全的底部導航欄實現方法
本文(爭取做到)Android 最全的底部導航欄實現方法. 現在寫了4個主要方法. 還有一些個人感覺不完全切題的方法也會簡單介紹一下. 方法一. ViewPager + List<View> + PagerAdapter 先看a
底部導航欄實現
底部導航欄我選擇用FragmentTabHost+Fragment來實現,這個方法比較好用,程式碼量也不多 首先是開始的activity_main.xml <RelativeLayout xmlns:android="http://schemas
TabLayout+ViewPager+Fragment實現頂部或底部導航欄
以前看慕課網的教程,寫過一個微信Tab選項卡切換的例子,使用的是ViewPager+Fragment來實現的,說實話,當時為了實現一些效果,還是寫了蠻多的程式碼,但是,今天介紹的TabLayout+ViewPager+Fragment實現導航欄可以使用很少的程式
tablayout+viewpager+fragment實現頁面底部導航欄
先附上效果圖第一步:書寫佈局我的佈局檔案是這樣的<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/an
TabLayout與viewpager實現頂部導航欄
TabLayout是design包的一個元件,常與viewpager搭配使用,主要是因為用法簡單,而且效果也好。下面是效果圖 接下來說說用法:首先匯入依賴 compile 'com.android.support:design:25.3.1' 佈局檔案:activity_
超簡單的ViewPager導航欄聯動實現--TabLayout
效果如下: 實現這個效果非常的簡單,就兩個控制元件,一個TabLayout,一個ViewPager,主要通過TabLayout的setupWithViewPager()方法來使TabLayout和ViewPager聯動 下面說說具體實現步驟。 1,TabLayout有自己
AppBarLayout+TabLayout+RecyclerView實現滑動隱藏導航欄。
先看效果圖。 其實現思路是這樣的,整體佈局用CoordinatorLayout,然後裡面加入AppBarLayout,這個bar容器裡面放入toolbar和TabBar,下面再加入一viewpager,類裡面讓它與TabLayout聯動,RecycleView則放在vie
通過TabLayout自定義tab實現圖文混搭導航欄
國際慣例先看效果 好久不見,最近沉默與需求無法自拔,也根據最近的小需求做出一篇使用性的教程,內容不難。 本效果是使用谷歌提供的design庫中的tabyout來實現的效果 com.android.support:design:25.1.1 如果不