全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android design包自定义tablayout的底部导航栏的实现方法

以前做项目大多用的radiobutton,今天用tablayout来做一个tab切换页面的的效果.

实现的效果就是类似QQ.微信的页面间(也就是Fragment间)的切换.如图:

 

布局只要一个tablayout

<android.support.design.widget.TabLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/nav_tl"
    app:tabIndicatorHeight="0dp"//将指示器去掉 ps:如果大家对tablayout有一些样式上的需求
    可以自定义style,这里就不加了
    android:layout_gravity="bottom"
    ></android.support.design.widget.TabLayout>

然后就是activity了

public class MainActivity extends BaseActivity implements TabLayout.OnTabSelectedListener{
  @BindView(R.id.main_container)
  LinearLayout mainContainer;
  @BindView(R.id.nav_tl)
  TabLayout navTl;
  //Tab 文字
  private final int[] TAB_TITLES = new int[]{R.string.nav_home,R.string.nav_order,R.string.nav_my};
  //Tab 图片
  private final int[] TAB_IMGS = new int[]{R.drawable.nav_home_bg,R.drawable.nav_order_bg,R.drawable.nav_my_bg};
//贴出一个R.drawable.nav_home_bg的文件,其他类似:`<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true" android:drawable="@mipmap/nav_home_selected"></item>
  <item android:state_selected="false" android:drawable="@mipmap/nav_home_normal"></item>
</selector>`
  private FirstPagerFragment firstPagerFragment;
  private PersonalFragment personalFragment;
  private SeekOrderFragment seekOrderFragment;
  private android.support.v4.app.FragmentManager manager;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    iniView();
    iniData();
  }
  private void iniData() {
  }
  private void iniView() {
    LayoutInflater inflater = LayoutInflater.from(this);
    manager = getSupportFragmentManager();
    getTab(R.id.main_container,manager,0);
    setTabs(navTl,inflater,TAB_TITLES,TAB_IMGS);
    navTl.setOnTabSelectedListener(this);
  }
  /**
   * @description: 设置添加Tab
   * 我们自定义的布局customer_layout其实就是一张图片加文字
   * `<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="match_parent"
  android:layout_height="match_parent">
  <ImageView
    android:id="@+id/img_tab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    />
  <TextView
    android:id="@+id/tv_tab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:textColor="@drawable/tv_color_bg"//text我用了一个颜色选择器,主要在我选中的时候能改变颜色
    />
</LinearLayout>`
   */
  private void setTabs(TabLayout tabLayout, LayoutInflater inflater, int[] tabTitlees, int[] tabImgs) {
    for (int i = 0; i < tabImgs.length; i++) {
      TabLayout.Tab tab = tabLayout.newTab();
      View view = inflater.inflate(R.layout.customer_layout, null);
      tab.setCustomView(view);
      TextView tvTitle = (TextView) view.findViewById(R.id.tv_tab);
      tvTitle.setText(tabTitlees[i]);
      ImageView imgTab = (ImageView) view.findViewById(R.id.img_tab);
      imgTab.setImageResource(tabImgs[i]);
      tabLayout.addTab(tab);
    }
  }
  @Override
  public void onTabSelected(TabLayout.Tab tab) {
    getTab(R.id.main_container,manager,tab.getPosition());
  }
  @Override
  public void onTabUnselected(TabLayout.Tab tab) {
  }
  @Override
  public void onTabReselected(TabLayout.Tab tab) {
  }
  //设置tab的监听,选中某一个tab对应的Fragment要及时切换,相信大家看代码能看明白
  private void getTab(int container, android.support.v4.app.FragmentManager manager, int position){
    FragmentTransaction ft = manager.beginTransaction();
    hideAll(ft);
    switch (position){
      case 0:
        if(firstPagerFragment==null){
          firstPagerFragment=new FirstPagerFragment();
          ft.add(container,firstPagerFragment);
        }else {
          ft.show(firstPagerFragment);
        }
        break;
      case 1:
        if(seekOrderFragment==null){
          seekOrderFragment=new SeekOrderFragment();
          ft.add(container,seekOrderFragment);
        }else {
          ft.show(seekOrderFragment);
        }
        break;
      case 2:
        if(personalFragment==null){
          personalFragment=new PersonalFragment();
          ft.add(container,personalFragment);
        }else {
          ft.show(personalFragment);
        }
        break;
    }
    ft.commit();
  }
  private void hideAll(FragmentTransaction ft) {
    if(firstPagerFragment!=null){
      ft.hide(firstPagerFragment);
    }
    if(personalFragment!=null){
      ft.hide(personalFragment);
    }
    if(seekOrderFragment!=null){
      ft.hide(seekOrderFragment);
    }
  }
}

以上所述是小编给大家介绍的Android design包自定义tablayout的底部导航栏的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# tablayout底部导航栏  # design  # tablayout  # Android程序开发之Fragment实现底部导航栏实例代码  # Android实现底部导航栏功能(选项卡)  # 超简单的几行代码搞定Android底部导航栏功能  # Android实现简单底部导航栏 Android仿微信滑动切换效果  # android中Fragment+RadioButton实现底部导航栏  # 性能分析:指如何快速定位SQL问题  # Android用Scroller实现一个可向上滑动的底部导航栏  # ANDROID BottomNavigationBar底部导航栏的实现示例  # Android使用RadioGroup实现底部导航栏  # Android底部导航栏的动态替换方案  # 自定义  # 小编  # 在我  # 在此  # 用了  # 给大家  # 能看  # 如图  # 来做  # 不加  # 所述  # 贴出  # 给我留言  # 感谢大家  # 疑问请  # 有任何  # 选择器  # int  # private  # final 


相关文章: linux top下的 minerd 木马清除方法  深圳网站制作案例,网页的相关名词有哪些?  网站图片在线制作软件,怎么在图片上做链接?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  PHP 500报错的快速解决方法  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  jQuery 常见小例汇总  装修招标网站设计制作流程,装修招标流程?  兔展官网 在线制作,怎样制作微信请帖?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  高防服务器租用如何选择配置与防御等级?  TestNG的testng.xml配置文件怎么写  建站ABC备案流程中有哪些关键注意事项?  建站主机选购指南与交易推荐:核心配置解析  已有域名和空间如何快速搭建网站?  大型企业网站制作流程,做网站需要注册公司吗?  高防服务器租用指南:配置选择与快速部署攻略  如何在宝塔面板中创建新站点?  简单实现Android验证码  头像制作网站在线制作软件,dw网页背景图像怎么设置?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  Android自定义listview布局实现上拉加载下拉刷新功能  建站之星代理费用多少?最新价格详情介绍  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  建站主机是否等同于虚拟主机?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  制作网站的模板软件,网站怎么建设?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Android滚轮选择时间控件使用详解  Swift中switch语句区间和元组模式匹配  实惠建站价格推荐:2025年高性价比自助建站套餐解析  如何在腾讯云服务器上快速搭建个人网站?  建站主机服务器选购指南:轻量应用与VPS配置解析  如何通过VPS搭建网站快速盈利?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何通过网站建站时间优化SEO与用户体验?  制作网页的网站有哪些,电脑上怎么做网页?  建站之星后台密码遗忘如何找回?  Python路径拼接规范_跨平台处理说明【指导】  C++中引用和指针有什么区别?(代码说明)  香港服务器选型指南:免备案配置与高效建站方案解析  韩国服务器如何优化跨境访问实现高效连接?  建站之星如何保障用户数据免受黑客入侵?  seo网站制作优化,网站SEO优化步骤有哪些?  如何快速配置高效服务器建站软件?  ,制作一个手机app网站要多少钱?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  建站之星安装提示数据库无法连接如何解决? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。