`

关于Tablayout与Fragment结合的使用

阅读更多

最近学习android的时候,用到了一些设计包的新控件,感觉不仅从外观上使应用能有一个很大的提升,而且从代码编写上也会更加方便,更加得心应手。这不,最近写一个项目的时候需要用到一个导航的样式,上方是可点击可滑动的标签,下方是可切换的fragment页面,以前可能会用tabhost、actionbar加fragment之类的方式,或者自定义布局之类的,但是这里我推荐一个官方设计包的控件,最大的好处是兼容性好。话不多说,先看效果吧。

 



  

 

一、导入相关的库。

由于我是用的android studio作开发工具,所以导包特别方便,下面进行详细介绍。

1.打开工程结构


 2.选择需要导入的模板,默认为app


 3.选择依赖性


 4.选择最右方加号,选择添加库

 5.选择要导入的设计包

 6.点击ok,打开grandle文件,可以看到添加成功,当然你也可以跳过以上5步,直接在这添加库,再重构工程即可。



 

二、创建Fragment,编写对应的界面布局。从效果图我们可以知道,有三个可切换的fragment,分别对应news,game,technology。

1.应用的主界面如下所示,之所以用到toolbar,是为了方便替代原生的actionbar,用过actionbar的朋友都知道那个突出的阴影效果有时候对统一效果是很坑的。不过需要在设置activity的样式的时候要设置成noActionbar的。android:theme="@style/Theme.AppCompat.Light.NoActionBar"

 

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay"
        app:elevation="0dp">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay">

            <android.support.design.widget.TabLayout
                android:id="@+id/tabLayout"
                android:layout_width="match_parent"
                app:tabSelectedTextColor="@android:color/white"
                app:tabIndicatorColor="@android:color/black"
                app:tabTextColor="@android:color/holo_blue_bright"
                android:layout_height="wrap_content">

            </android.support.design.widget.TabLayout>
        </android.support.v7.widget.Toolbar>

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/content_main" />

</android.support.design.widget.CoordinatorLayout>
 这里对这段代码进行两部分的解释,第一部分是tablayout中可以看到如下三个属性

 

app:tabSelectedTextColor="@android:color/white"
app:tabIndicatorColor="@android:color/black"
app:tabTextColor="@android:color/holo_blue_bright"

 分别对应着导航标签选中后文字的颜色,导航标签选中后下划线的颜色,导航标签常规颜色。

第二部分就是content_main布局,里面放了一个viewpager,这个不多讲,直接上代码。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
    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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="cn.bill56.tablayoutdemo.MainActivity"
    tools:showIn="@layout/activity_main">

</android.support.v4.view.ViewPager>

 2.创建的三个fragment及对应的布局文件结构如下所示,这里为了区分不同,可以将讲个fragment的背景色设置一下。

        

 

三、打开MainActivity,编写相关代码

1.先上代码,随后进行相关解释。

package cn.bill56.tablayoutdemo;

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.os.Bundle;
import android.support.v7.widget.Toolbar;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    // 工具栏
    private Toolbar toolbar;
    // 导航布局
    private TabLayout tabLayout;
    // 视图对象
    private ViewPager viewPager;
    // 自定义类,导航布局的适配器
    private TabAdaper tabAdaper;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        // 绑定对象
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        // 替换actionbar
        setSupportActionBar(toolbar);
        // 绑定viewpager与tablayout
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        // 新建适配器
        tabAdaper = new TabAdaper(getSupportFragmentManager());
        // 设置适配器
        viewPager.setAdapter(tabAdaper);
        // 直接绑定viewpager,消除了以前的需要设置监听器的繁杂工作
        tabLayout.setupWithViewPager(viewPager);
    }

    // fragment的适配器类
    class TabAdaper extends FragmentPagerAdapter {

        List<Fragment> fragmentList = new ArrayList<>();
        // 标题数组
        String[] titles = {"新闻", "游戏","科技"};

        public TabAdaper(FragmentManager fm) {
            super(fm);
            fragmentList.add(new NewsFragment());
            fragmentList.add(new GameFragment());
            fragmentList.add(new TechnologyFragment());
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return titles[position];
        }

        @Override
        public Fragment getItem(int position) {
            return fragmentList.get(position);
        }

        @Override
        public int getCount() {
            return fragmentList.size();
        }
    }

}

 
 2.这里用到了一个自定义的适配器,扩展至FragmentPagerAdapter,可以将viewpager与fragment进行绑定,当中可以看到有个titles数组和一个getPageTitle的方法,就是用于设置每个fragment的标题。

 

3.直接通过tabLayout.setupWithViewPager(viewPager);将导航布局与viewpager进行了绑定,避免了之前需要为其设置监听器,重写方法来绑定的步骤,更为简单高效。

 

 

  • 大小: 6.9 KB
  • 大小: 46.7 KB
  • 大小: 37.7 KB
  • 大小: 20.8 KB
  • 大小: 37.7 KB
  • 大小: 14.4 KB
  • 大小: 7.7 KB
  • 大小: 6.4 KB
  • 大小: 31.7 KB
分享到:
评论

相关推荐

    TabLayout+Fragment 使用示例

    以上是关于`TabLayout+Fragment`结合使用的主要知识点,理解并熟练运用这些概念,可以有效地在Android应用中构建出功能强大的多标签界面。在实际开发中,还需要根据具体需求进行适当的调整和优化。

    Android TabLayout ViewPager Fragment部分文件

    在Android应用开发中,TabLayout、ViewPager和Fragment是构建用户界面的三个重要组件,它们常被结合使用以实现多标签页切换的效果。本文件“Android TabLayout ViewPager Fragment部分文件”很可能是包含了一个示例...

    TabLayout、ViewPager和Fragment实现多页面切换功能

    然后在代码中找到这个TabLayout,并使用`TabLayout.setupWithViewPager()`方法将其与之前初始化的ViewPager关联起来。这样,TabLayout的标签就会自动根据ViewPager的Adapter内容生成。 5. **定制TabLayout外观**:...

    Tablayout+viewpager+fragment

    `TabLayout` 可以与`ViewPager` 结合使用,自动管理标签的数量和状态,与当前`ViewPager` 中的页面保持同步。 `ViewPager` 是一个用来展示可滑动的页面集合的控件,通常用于实现横向滑动的页面切换效果。它可以承载...

    TabLayout+fragment实现滑动到或者点击某fragment该fragment才开始加载数据的一小解决方案

    在Android开发中,`TabLayout`与`ViewPager`结合使用是一种常见的实现标签栏与内容切换的方式,而`Fragment`则是Android应用中用于处理界面模块化的重要组件。在大型应用中,为了提高用户体验和减少资源浪费,通常会...

    TabLayout与ViewPage及Fragment的简单使用

    `TabLayout`和`ViewPager`的结合使用使得在有限的屏幕空间内展示多个页面变得可能,而`Fragment`则让每个页面的内容管理变得更加简单和高效。在实际项目中,可以根据需求进一步优化和扩展,比如添加动画效果、自定义...

    TabLayout+ViewPager+Fragment实现分页滑动效果Demo

    在Android开发中,`TabLayout`、`ViewPager`和`Fragment`是常用组件,它们结合可以构建出功能强大的分页滑动界面。本教程将详细解释如何利用这些组件实现一个分页滑动效果的Demo。 首先,`TabLayout`是Google推出的...

    Android使用TabLayout+Fragment实现顶部选项卡

    它可以与 ViewPager 结合使用,实现选项卡的滑动切换。使用 TabLayout 需要在项目中加入 Design 包,dependencies 中添加 compile 'com.android.support:design:24.1.1'。 在布局文件中,使用 android.support....

    Android软件架构之RadioGroup + Fragment , TabLayout + ViewPager +Fragment

    本主题主要探讨的是一个常见的Android软件架构设计,它结合了RadioGroup、Fragment、TabLayout和ViewPager组件,以实现类似今日头条等主流应用的界面和交互效果。这个架构模式在商业软件中广泛应用,因为它提供了...

    Android TabLayout+fragment(左右切换文字颜色渐变)

    本教程将详细讲解如何使用`TabLayout`结合`Fragment`来构建一个左右切换时文字颜色渐变的标签栏,并且支持自定义文字和图片。 首先,我们需要引入`TabLayout`的相关依赖。在`build.gradle`(Module: app)文件中...

    kotlin--利用TabLayout、ViewPager、Fragment实现滑动切换页面

    本教程将深入探讨如何使用Kotlin语言,结合TabLayout、ViewPager和Fragment技术来实现这一功能。 首先,TabLayout是Android设计支持库中的一个组件,用于展示多个标签,用户可以通过点击或滑动来切换不同的标签页。...

    TabLayout+ViewPager+Fragment复用+Gson解析本地数据

    在Android开发中,`TabLayout`、`ViewPager`和`Fragment`的组合是构建多页面、可滑动切换界面的常见方法。这个Demo展示了如何利用这些组件创建一个高效的UI结构,同时结合`Gson`库解析本地JSON数据,实现数据的动态...

    ViewPager与Fragment结合的简单使用

    当ViewPager与Fragment结合使用时,可以创建出具有动态、交互丰富的多页布局。在这个场景中,我们主要探讨如何将ViewPager与Fragment相结合,以实现一个简单的应用案例。 首先,我们需要理解ViewPager的工作原理。...

    Android中在DialogFragment内使用TabLayout+ViewPager

    `ViewPager`则是一个可以左右滑动浏览多个页面的视图,常与`TabLayout`结合使用,实现标签页的切换功能。 1. **集成TabLayout** - 在布局文件中添加`TabLayout`,并为每个标签页创建一个`Tab`。 - 设置`TabLayout...

    Tab和Fragment结合使用

    在Android设计支持库中,TabLayout与ViewPager结合使用,可以创建一个可滑动的页面指示器,每个页面由一个Fragment表示。这种方式提供了流畅的用户体验,用户可以通过滑动或者点击Tab来切换内容。 在...

    Fragment的demo里面添加了tablayout

    以下是关于`Fragment`和`TabLayout`的一些关键知识点: 1. **Fragment的生命周期**:`Fragment`有自己的生命周期,包括`onCreate()`, `onCreateView()`, `onActivityCreated()`, `onStart()`, `onResume()`, `...

    NavigationView+ToolBar+TabLayout+ViewPager+Fragment综合使用

    在Android应用开发中,组合使用`NavigationView`, `ToolBar`, `TabLayout`, `ViewPager`和`Fragment`是一项常见的技术,能够构建出功能丰富的交互界面。这些组件的协同工作可以帮助开发者实现导航栏、顶部栏、标签页...

    fragment+listview+TabLayout使用 listview实现图片 文字加载

    `TabLayout`常与`ViewPager`结合使用,提供一种方便的方式来展示多个`Fragment`,每个`Fragment`代表一个标签下的内容。 现在,让我们来探讨如何将这三个组件整合起来: 1. **创建`Fragment`**:首先,我们需要为...

    ViewPager和Fragment结合使用的案例

    当ViewPager与Fragment结合使用时,可以实现更复杂、动态的界面布局。下面将详细探讨这两者的结合以及在实际案例中的应用。 首先,了解ViewPager的基本用法。ViewPager继承自ViewGroup,它通过PagerAdapter来管理其...

    TabLayout_ViewPager_Fragment

    `TabLayout`与`ViewPager`结合使用时,可以自动同步标签的状态和`ViewPager`中的页面,使得用户可以通过点击标签或滑动屏幕在不同的页面之间切换。 ### 2. ViewPager `ViewPager`是Android的另一个关键组件,用于...

Global site tag (gtag.js) - Google Analytics