您的位置:首页 > 其它

TabLayout学习

2016-07-10 09:48 225 查看
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.user.android2lesson_01_tablayout.MainActivity">

<!-- 步骤1 :将TabLayout和ViewPager添加到布局文件里
注意::这里需要将标签的包进行引入
-->
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"

/>

</LinearLayout>

package com.user.android2lesson_01_tablayout;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;

/**
* Created by user on 2016/7/4.
*/
public class MyAdapter extends FragmentPagerAdapter{
//   创建第二步:
//    创建一个适配器,进行数据和界面之间的适配

//  适配器里有什么
//    1.显示的fragment列表
private List<Fragment> list;
//    2.显示的标签的标题列表
private List<String> listTitle;

//    重写构造函数,在构造函数里进行成员变量(fragment列表和标题列表的赋值)
public MyAdapter(FragmentManager fm, List<Fragment> list ,List<String> listTitle){
super(fm);
this.list = list;
this.listTitle = listTitle;
}

@Override
public Fragment getItem(int position) {
//        返回位置对应的Fragment
return list.get(position);
}

@Override
public int getCount() {
//        返回所有fragment的个数
return list.size();
}
//    返回标题对应的tab上的名字
@Override
public CharSequence getPageTitle(int position) {
return listTitle.get(position);
}
}

package com.user.android2lesson_01_tablayout;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
//   创建第三步:
//    将数据和界面进行关联

//    声明属性
private TabLayout tabLayout;
private ViewPager viewPager;
//    声明要显示的界面和标题数组
private List<Fragment> list;
private List<String> listTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//        在这里进行数据和界面的初始化
//        1.将id和成员变量进行关联
tabLayout = (TabLayout) findViewById(R.id.tablayout);
viewPager = (ViewPager) findViewById(R.id.viewpager);
//        2.进行数据的初始化和整理
list = new ArrayList<Fragment>();
list.add(new TwoFragmen());
list.add(new ThreeFragmnt());
list.add(new FourFragment());

listTitle = new ArrayList<String>();
listTitle.add("Two");
listTitle.add("Three");
listTitle.add("Four");
//        3. 创建适配器
MyAdapter adapter = new MyAdapter(getSupportFragmentManager(),list,listTitle);
//        4.绑定适配器
viewPager.setAdapter(adapter);
//        指定当前选中页
viewPager.setCurrentItem(0);
//        5.将TabLayout和ViewPager关联
tabLayout.setupWithViewPager(viewPager);
}
}

还需要3个fragment下面类似的建三个
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.user.android2lesson_01_tablayout.TwoFragmen">

<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="我是第二个fragment" />

</FrameLayout>

package com.user.android2lesson_01_tablayout;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
* A simple {@link Fragment} subclass.
*/
public class TwoFragmen extends Fragment {

public TwoFragmen() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_two, container, false);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: