博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android--------TabLayout实现新闻客户端顶部导航栏
阅读量:6172 次
发布时间:2019-06-21

本文共 2828 字,大约阅读时间需要 9 分钟。

  hot3.png

APP市场中大多数新闻App都有导航菜单,导航菜单是一组标签的集合,在新闻客户端中,每个标签标示一个新闻类别,对应下面ViewPager控件的一个分页面,今日头条, 网易新闻等。

随着版本迭代的更新,带来了许多控件,案例主要用到了TabLayout,ViewPage,RecyclerView,CardView等新控件。 效果如图:

           

 

以前的实现方法是 :ViewPagerIndicator + Fragment + ViewPager 相结合来实现

请看博客: 。

今天主要讲的是另一种实现方式:TabLayout+ Fragment + ViewPager

添加程序所需要的依赖:

compile 'com.android.support:design:23.2.1' compile 'com.android.support:recyclerview-v7:23.1.1' compile 'com.android.support:cardview-v7:23.2.1'

主布局

Tablayout控件包含很多属性 例如 tabIndicatorColor:菜单下方移动的横线的颜色  属性很多就不一 一介绍了,代码中有注释。

Activity.Java

public class TabLessActivity extends AppCompatActivity {    private TabLayout tabLayout = null;    private ViewPager viewPager;    private Fragment[] mFragmentArrays = new Fragment[5];    private String[] mTabTitles = new String[5];    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.tab_layout);        tabLayout = (TabLayout) findViewById(R.id.tablayout);        viewPager = (ViewPager) findViewById(R.id.tab_viewpager);        initView();    }    private void initView() {        mTabTitles[0] = "推荐";        mTabTitles[1] = "热点";        mTabTitles[2] = "科技";        mTabTitles[3] = "体育";        mTabTitles[4] = "健康";        tabLayout.setTabMode(TabLayout.MODE_FIXED);        //设置tablayout距离上下左右的距离        //tab_title.setPadding(20,20,20,20);        mFragmentArrays[0] = TabFragment.newInstance();        mFragmentArrays[1] = TabFragment.newInstance();        mFragmentArrays[2] = TabFragment.newInstance();        mFragmentArrays[3] = TabFragment.newInstance();        mFragmentArrays[4] = TabFragment.newInstance();        PagerAdapter pagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager());        viewPager.setAdapter(pagerAdapter);        //将ViewPager和TabLayout绑定        tabLayout.setupWithViewPager(viewPager);    }}

Fragment.java

public class TabFragment extends Fragment {    public static Fragment newInstance() {        TabFragment fragment = new TabFragment();        return fragment;    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View rootView = inflater.inflate(R.layout.fragment_tab, container, false);        RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler);        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);        recyclerView.setLayoutManager(layoutManager);        recyclerView.setAdapter(new RecyclerAdapter());        return rootView;    }}

技术在更新,我们在进步,TabLayout实现tab导航效果比以前那些方法来的更加简单方便。

 

源码点击下载:

 

转载于:https://my.oschina.net/zhangqie/blog/839756

你可能感兴趣的文章
Python tablib模块
查看>>
站立会议02
查看>>
Windows和Linux如何使用Java代码实现关闭进程
查看>>
0428继承性 const static
查看>>
第一课:从一个简单的平方根运算学习平方根---【重温数学】
查看>>
NET反射系统
查看>>
Oracle12C本地用户的创建和登录
查看>>
使用JS制作一个鼠标可拖的DIV(一)——鼠标拖动
查看>>
HDU problem 5635 LCP Array【思维】
查看>>
leetcode10. 正则表达式匹配
查看>>
redis常用命令--zsets
查看>>
springcloud--Feign(WebService客户端)
查看>>
网络攻击
查看>>
sorting, two pointers(cf div.3 1113)
查看>>
Scala并发编程【消息机制】
查看>>
win10下安装Oracle 11g 32位客户端遇到INS-13001环境不满足最低要求
查看>>
AngularJS-01.AngularJS,Module,Controller,scope
查看>>
【MySQL 安装过程1】顺利安装MySQL完整过程
查看>>
Inno Setup入门(二十)——Inno Setup类参考(6)
查看>>
图片自适应
查看>>