最近学习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进行了绑定,避免了之前需要为其设置监听器,重写方法来绑定的步骤,更为简单高效。
相关推荐
以上是关于`TabLayout+Fragment`结合使用的主要知识点,理解并熟练运用这些概念,可以有效地在Android应用中构建出功能强大的多标签界面。在实际开发中,还需要根据具体需求进行适当的调整和优化。
在Android应用开发中,TabLayout、ViewPager和Fragment是构建用户界面的三个重要组件,它们常被结合使用以实现多标签页切换的效果。本文件“Android TabLayout ViewPager Fragment部分文件”很可能是包含了一个示例...
然后在代码中找到这个TabLayout,并使用`TabLayout.setupWithViewPager()`方法将其与之前初始化的ViewPager关联起来。这样,TabLayout的标签就会自动根据ViewPager的Adapter内容生成。 5. **定制TabLayout外观**:...
`TabLayout` 可以与`ViewPager` 结合使用,自动管理标签的数量和状态,与当前`ViewPager` 中的页面保持同步。 `ViewPager` 是一个用来展示可滑动的页面集合的控件,通常用于实现横向滑动的页面切换效果。它可以承载...
在Android开发中,`TabLayout`与`ViewPager`结合使用是一种常见的实现标签栏与内容切换的方式,而`Fragment`则是Android应用中用于处理界面模块化的重要组件。在大型应用中,为了提高用户体验和减少资源浪费,通常会...
`TabLayout`和`ViewPager`的结合使用使得在有限的屏幕空间内展示多个页面变得可能,而`Fragment`则让每个页面的内容管理变得更加简单和高效。在实际项目中,可以根据需求进一步优化和扩展,比如添加动画效果、自定义...
在Android开发中,`TabLayout`、`ViewPager`和`Fragment`是常用组件,它们结合可以构建出功能强大的分页滑动界面。本教程将详细解释如何利用这些组件实现一个分页滑动效果的Demo。 首先,`TabLayout`是Google推出的...
它可以与 ViewPager 结合使用,实现选项卡的滑动切换。使用 TabLayout 需要在项目中加入 Design 包,dependencies 中添加 compile 'com.android.support:design:24.1.1'。 在布局文件中,使用 android.support....
本主题主要探讨的是一个常见的Android软件架构设计,它结合了RadioGroup、Fragment、TabLayout和ViewPager组件,以实现类似今日头条等主流应用的界面和交互效果。这个架构模式在商业软件中广泛应用,因为它提供了...
本教程将详细讲解如何使用`TabLayout`结合`Fragment`来构建一个左右切换时文字颜色渐变的标签栏,并且支持自定义文字和图片。 首先,我们需要引入`TabLayout`的相关依赖。在`build.gradle`(Module: app)文件中...
本教程将深入探讨如何使用Kotlin语言,结合TabLayout、ViewPager和Fragment技术来实现这一功能。 首先,TabLayout是Android设计支持库中的一个组件,用于展示多个标签,用户可以通过点击或滑动来切换不同的标签页。...
在Android开发中,`TabLayout`、`ViewPager`和`Fragment`的组合是构建多页面、可滑动切换界面的常见方法。这个Demo展示了如何利用这些组件创建一个高效的UI结构,同时结合`Gson`库解析本地JSON数据,实现数据的动态...
当ViewPager与Fragment结合使用时,可以创建出具有动态、交互丰富的多页布局。在这个场景中,我们主要探讨如何将ViewPager与Fragment相结合,以实现一个简单的应用案例。 首先,我们需要理解ViewPager的工作原理。...
`ViewPager`则是一个可以左右滑动浏览多个页面的视图,常与`TabLayout`结合使用,实现标签页的切换功能。 1. **集成TabLayout** - 在布局文件中添加`TabLayout`,并为每个标签页创建一个`Tab`。 - 设置`TabLayout...
在Android设计支持库中,TabLayout与ViewPager结合使用,可以创建一个可滑动的页面指示器,每个页面由一个Fragment表示。这种方式提供了流畅的用户体验,用户可以通过滑动或者点击Tab来切换内容。 在...
以下是关于`Fragment`和`TabLayout`的一些关键知识点: 1. **Fragment的生命周期**:`Fragment`有自己的生命周期,包括`onCreate()`, `onCreateView()`, `onActivityCreated()`, `onStart()`, `onResume()`, `...
在Android应用开发中,组合使用`NavigationView`, `ToolBar`, `TabLayout`, `ViewPager`和`Fragment`是一项常见的技术,能够构建出功能丰富的交互界面。这些组件的协同工作可以帮助开发者实现导航栏、顶部栏、标签页...
`TabLayout`常与`ViewPager`结合使用,提供一种方便的方式来展示多个`Fragment`,每个`Fragment`代表一个标签下的内容。 现在,让我们来探讨如何将这三个组件整合起来: 1. **创建`Fragment`**:首先,我们需要为...
当ViewPager与Fragment结合使用时,可以实现更复杂、动态的界面布局。下面将详细探讨这两者的结合以及在实际案例中的应用。 首先,了解ViewPager的基本用法。ViewPager继承自ViewGroup,它通过PagerAdapter来管理其...
`TabLayout`与`ViewPager`结合使用时,可以自动同步标签的状态和`ViewPager`中的页面,使得用户可以通过点击标签或滑动屏幕在不同的页面之间切换。 ### 2. ViewPager `ViewPager`是Android的另一个关键组件,用于...