前言
效果图如下
TabLayout 是Android com.android.support:design库的一个控件,详细了解可以自行谷歌。
下面主要介绍如何使用
步骤
1.添加com.android.support:design引用库。添加方法点击工具栏上的Project Structure图标。
2.创建一个xml布局并使用TabLayout 注意需要结合ViewPager控件一起使用 ,布局如下
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="0dp" android:id="@+id/view_pager" android:layout_weight="1"> </android.support.v4.view.ViewPager> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tab" app:tabBackground="@color/tab_background" app:tabMode="fixed" style="@style/MyCustomTabLayout"> </android.support.design.widget.TabLayout> </LinearLayout>
相关的style如下
MyCustomTabLayout
<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabIndicatorColor">?attr/colorAccent</item> <item name="tabIndicatorHeight">0dp</item> <!--<item name="tabPaddingStart">12dp</item>--> <item name="tabTextColor">#6b7984</item> <item name="tabPaddingEnd">12dp</item> <item name="tabSelectedTextColor">#f7554a</item> </style>
相关的arrays.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="tab_titles"> <item>首页</item> <item>惠存金</item> <item>网点</item> <item>发现</item> <item>我的</item> </string-array> </resources>
相关的drawable
tab1.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ico_1_sel" android:state_selected="true" /> <item android:drawable="@drawable/ico_1" /> </selector>
3.编写核心代码如下
MainActivity.Java
import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.KeyEvent; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { //String[] tabTitle = {"首页", "惠存金", "网点", "发现", "我的"}; String[] tabTitle = getResources().getStringArray(R.array.tab_titles); List<Fragment> fragmentList = new ArrayList<>(); fragmentList.add(new BlankFragment1()); fragmentList.add(new BlankFragment2()); fragmentList.add(new BlankFragment3()); fragmentList.add(new BlankFragment4()); fragmentList.add(new BlankFragment5()); ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList, tabTitle)); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); TabLayout tabLayout = (TabLayout) findViewById(R.id.tab); tabLayout.setupWithViewPager(viewPager); for (int i = 0; i < tabLayout.getTabCount(); i++) { TabLayout.Tab tab = tabLayout.getTabAt(i); Drawable d = null; switch (i) { case 0: d = getResources().getDrawable(R.drawable.tab1); break; case 1: d = getResources().getDrawable(R.drawable.tab2); break; case 2: d = getResources().getDrawable(R.drawable.tab3); break; case 3: d = getResources().getDrawable(R.drawable.tab4); break; case 4: d = getResources().getDrawable(R.drawable.tab5); break; } tab.setIcon(d); } } }
FragmentPagerAdapter.java
import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import java.util.List; /** * Created by aoc on 2017/2/4. */ public class MyFragmentPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; private String[] titles; public MyFragmentPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragmentList, String[] titles) { super(fragmentManager); this.fragmentList = fragmentList; this.titles = titles; } @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } @Override public CharSequence getPageTitle(int position) { return titles[position]; } }
以上所述是小编给大家介绍的Android TabLayout实现底部菜单导航支持左右滑动功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
并且如此真实的活着——这,就是旅行的意义。