Android框架之TableLayout的使用

news/2024/7/5 5:30:58
1.简介

          我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合。达到很漂亮的效果。但是TabPageIndicator是第三方的,而且比较老了,当然了现在很多大神都已经开始自己写TabPageIndicator来满足自己的需求,在2015年的google大会上,google发布了新的Android Support Design库,里面包含了几个新的控件,其中就有一个TabLayout,它就可以完成TabPageIndicator的效果,而且还是官方的,最好的是它可以兼容到2.2以上版本,包括2.2。下面我就举一个简单的例子来使用它。
     使用的 android studio进行开发的,所以引用TabLayout很简单,只要在build.gradle中加入 compile 'com.android.support:design:23.3.0'即可。
       

2.引用库

compile 'com.android.support:design:24.2.1'


布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


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

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


    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

 

定义和创建MyFragment

/**
 * 项目名:Software_Framework
 * 包名:com.chengdong.software_framework.TableLayout.Fragmnet
 * 文件名:MyFragment
 * 创建者:周成东
 * 创建时间:2017/9/15 22:46
 * 描述:ToDo
 */

public class MyFragment extends Fragment {
 private String title;

    public String getTitle() {
        return title;
    }

    public String getContent() {
        return content;
    }

    private String content;
    private TextView textView;

    private Context context;

    public MyFragment(String title, String content) {
        this.title = title;
        this.content = content;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.context = getActivity();
    }

    /**
     * 綁定數據
     *
     * @param savedInstanceState
     */
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        textView.setText(content);
        super.onActivityCreated(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        textView = new TextView(context);
        textView.setTextSize(18);
        textView.setTextColor(Color.RED);
        textView.setGravity(Gravity.CENTER);
        return textView;
    }
}
设置viewpager适配器

public class TalbeLayoutAdapter extends FragmentPagerAdapter {
    private final ArrayList<MyFragment> mFragments;

    public TalbeLayoutAdapter(FragmentManager fm, ArrayList<MyFragment> myFragments) {
        super(fm);
        this.mFragments=myFragments;
    }

    @Override
    public Fragment getItem(int position) {

        return mFragments.get(position);

    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragments.get(position).getTitle();
    }
}


设置TableLayoutActivity 

public class TableLayoutActivity extends FragmentActivity {
    @Bind(R.id.tv_title)
    TextView tvTitle;
    @Bind(R.id.tabLayout)
    TabLayout tabLayout;
    @Bind(R.id.viewPager)
    ViewPager viewPager;
    private ArrayList<MyFragment> myFragments;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab_layout_main);
        ButterKnife.bind(this);
        tvTitle.setText("TableLayout的使用");
        myFragments = new ArrayList<>();

        for(int i=0;i<12;i++){
            myFragments.add(new MyFragment("标题"+i,"内容"+i));
        }
        TalbeLayoutAdapter adapter=new TalbeLayoutAdapter(getSupportFragmentManager(),myFragments);
        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);
        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
    }
}


http://www.niftyadmin.cn/n/3649324.html

相关文章

可视化大屏项目:学生就业统计展示

最近在学习前端开发&#xff0c;顺便做了一个项目&#xff0c;学生就业统计展示&#xff0c;可以直观的看到学生就业数据统计。由静态数据提供展示&#xff0c;使用Css3Html5JavaScript进行开发。源代码可以到文章底部扫码进行购买。 最终显示效果如下 购买链接&#xff1a;可视…

嵌入storybook组件_如何使用Storybook构建JS组件

嵌入storybook组件介绍 (Introduction) Storybook is an open source tool for developing UI (user interface) components in isolation and it integrates pretty well with most front end frameworks including React, Vue, and Angular and others. It makes building UI…

JSON解析之手动解析

1、JSON简介 1&#xff09;概念&#xff1a; JSON的全称是JavaScript Object Notation&#xff0c;是一种轻量级的数据交换格式。 2&#xff09;特点&#xff1a; &#xff08;1&#xff09;本质就是具有特定格式的字符串 &#xff08;2&#xff09;JSON完全独立于编程语言 &am…

leaflet弹窗_使用Leaflet在Angular中构建地图,第3部分:弹出服务

leaflet弹窗In my last post, we expanded upon our Angular Leaflet project by creating a service to serve up Markers. We’re going to now do the same thing for popups. 在上一篇文章中 &#xff0c;我们通过创建服务标记的服务扩展了Angular Leaflet项目。 现在&…

H5前端基础——HTML

网页的结构 一个网页有三个部分组成 结构 结构是页面的整体结构&#xff0c;哪里是标题&#xff0c;哪里是段落&#xff0c;哪里是图片 结构使用HTML来编写 表现 表现是页面的外在的样式&#xff0c;比如字体&#xff0c;字体大小&#xff0c;字体颜色&#xff0c;背景。。。 使…

[收藏]如何用这篇文章解决我们的工程对普通COM组件的引用:《引用ActiveX/COM组件时的Strong Name》

CSharp Tips&#xff1a;引用ActiveX/COM组件时的Strong Name 选择自 Mittermeyer 的 Blog 问题DotNet平台下提供了比较完备的类库&#xff0c;但是第一个版本总归不可能面面俱到&#xff0c;而且由于历史遗留问题&#xff0c;经常会和COM/ActiveX的组件之间进行互操作。笔…

使用Simple React Snippets VSCode扩展更快地编写React

I’m a big fan of speeding up every part of your development. If you shave off seconds here and there multiple times a day, you’ll save a ton of time over the course of a year. 我非常乐于加速开发的每个部分。 如果您每天在这里和那里多次剃光&#xff0c;那么一…

H5前端基础——css

CSS叫做层叠样式表&#xff0c;用来设置页面中元素的样式。背景颜色、字体颜色、字体大小。。。 CSS负责结构、表现、行为中的表现 编写的位置 1.内联样式 将样式编写到标签的style属性中 <p style"color:red;"></p> 这种样式只会对当前标签起作用&#…