Android開發之TabLayout實現底部導航欄
阿新 • • 發佈:2019-02-01
前言:既然Tablayout可以做成選項卡的導航欄,也可以做成底部導航欄的樣子,其實也就是去掉底部的indicator,把TabLayout佈局放在下面!
------------------------分割線---------------------------
效果圖:
底部文字圖片切換的時候沒有改變,需要的可以自己新增!
------------------------分割線---------------------------
來看程式碼:
其中著重注意的是TabLayout的那幾個屬性,這裡就不一一解釋了!<?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:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.fly.lsn12_tablayout_bottomnavigationbar.MainActivity"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <android.support.design.widget.TabLayout android:id="@+id/tl" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabGravity="fill" app:tabIndicatorHeight="0dp" app:tabMode="fixed" app:tabSelectedTextColor="?attr/colorPrimaryDark" app:tabTextColor="?attr/colorPrimary" /> </LinearLayout>
MainActivity完整程式碼:
MyFragment完整程式碼:import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private ViewPager viewPager; private TabLayout tabLayout; String title[] = { "標題1", "標題2", "標題3", }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager) findViewById(R.id.vp); tabLayout = (TabLayout) findViewById(R.id.tl); MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager()); tabLayout.setupWithViewPager(viewPager); for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); View view = View.inflate(this, R.layout.bottom_navigation, null); TextView tv = (TextView) view.findViewById(R.id.tv); tv.setText(title[i]); tab.setCustomView(view); } } class MyPagerAdapter extends FragmentPagerAdapter { public MyPagerAdapter(FragmentManager fm) { super(fm); } @Override public CharSequence getPageTitle(int position) { return title[position]; } @Override public Fragment getItem(int position) { Fragment f = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("title", title[position]); f.setArguments(bundle); return f; } @Override public int getCount() { return title.length; } } }
底部導航的佈局: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; import android.widget.TextView; /** * Created by Fly on 2017/5/8. */ public class MyFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Bundle bundle = getArguments(); String title = bundle.getString("title"); TextView tv = new TextView(getContext()); tv.setText(title); return tv; } }
<?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="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="haha" />
</LinearLayout>
-------------------深夜擼程式碼很辛苦,希望大家多多支援----------------------------------