Android TabLayout实现底部菜单导航支持左右滑动功能

前言

效果图如下

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实现底部菜单导航支持左右滑动功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

并且如此真实的活着——这,就是旅行的意义。

Android TabLayout实现底部菜单导航支持左右滑动功能

相关文章:

你感兴趣的文章:

标签云: