TableLayout和ViewPager的使用

来源:互联网 发布:安卓优化提速吧 编辑:程序博客网 时间:2024/04/19 19:20

虽然很简单,但是我总搞不懂,所以贴出来。以便学习。尽量贴出来复制就可以用的代码,第一段代码缺一个linnerlayout

1、xml布局

<android.support.design.widget.TabLayout    android:id="@+id/tb_title"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_alignParentLeft="true"    android:layout_alignParentStart="true"    android:layout_alignParentTop="true"    app:tabBackground="@drawable/tab_seleted_bg"    app:tabSelectedTextColor="@color/white"    app:tabTextColor="@color/white"    app:tabTextAppearance="@style/tabLayoutTextStyle"    app:tabIndicatorHeight="0dp"    ></android.support.design.widget.TabLayout><android.support.v4.view.ViewPager    android:id="@+id/viewpager"    android:layout_width="match_parent"    android:layout_height="match_parent" />

2、tab_select_bg按钮背景

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@color/title_bg" android:state_selected="true" />    <item android:drawable="@color/gray_btn_false" /></selector>

3、tabLayoutTextStyle

<style name="tabLayoutTextStyle">    <item name="android:textSize">@dimen/textsize_32</item></style>

4、TaskStatisticsActivity



package com.android.mgwaiter;import android.os.Bundle;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.app.FragmentTransaction;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.android.mgwaiter.Fragment.AbolishFragment;import com.android.mgwaiter.Fragment.FinishFragment;import com.android.mgwaiter.view.StatusTitle;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * Created by h *  */public class TaskStatisticsActivity extends AppCompatActivity {       TaskAdapter adapter;    List<String> parent = null;//列表头    Map<String, List<String>> map = null;//列表详情    private ViewPager viewpager;    Fragment finishFragment,abolishFragment;    TabLayout tb_title;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.task_statistics_activity);        inView();        initStatusBar();    }    //初始化控件    private void inView() {        viewpager = (ViewPager) findViewById(R.id.viewpager);//viewpager        tv_order_task = (TextView) findViewById(R.id.tv_order_task);//接单任务总计        tv_miss_task = (TextView) findViewById(R.id.tv_miss_task);//未接单任务总计        tv_general_assignment = (TextView) findViewById(R.id.tv_general_assignment);//推送总计        tv_order_rate = (TextView) findViewById(R.id.tv_order_rate);//接单率        tb_title= (TabLayout) findViewById(R.id.tb_title);    }    private void initStatusBar() {        initData();        FragmentManager fragmentManager = getSupportFragmentManager();        adapter = new TaskAdapter(fragmentManager);        viewpager.setAdapter(adapter);        viewpager.setOnGenericMotionListener(new View.OnGenericMotionListener() {            @Override            public boolean onGenericMotion(View view, MotionEvent motionEvent) {                return false;            }        });        tb_title.setupWithViewPager(viewpager);    }    private List<Fragment> list_fragment;    //初始化按钮数据    private void initData() {        list_fragment = new ArrayList<>();        list_fragment.add(new FinishFragment());        list_fragment.add(new AbolishFragment());    }    boolean[] fragmentsUpdateFlag = {false, false};    public class TaskAdapter extends FragmentPagerAdapter {        FragmentManager fm;        private List<String> list_Title;//tab名的列表          public TaskAdapter(FragmentManager fm) {            super(fm);            this.fm = fm;            list_Title=new ArrayList<>();            list_Title.add("已完成");            list_Title.add("已取消");        }        @Override        public Fragment getItem(int position) {            return list_fragment.get(position);        }        @Override        public int getCount() {                return list_fragment.size();        }        //此方法用来显示tab上的名字        @Override        public CharSequence getPageTitle(int position) {            return list_Title.get(position % list_Title.size());        }        public Object instantiateItem(ViewGroup container, int position) {            //得到缓存的fragment            Fragment fragment = (Fragment) super.instantiateItem(container,position);            Log.e("TaskStatisticsActivity","position ="+position);            //得到tag            String fragmentTag = fragment.getTag();            if (fragmentsUpdateFlag[position % fragmentsUpdateFlag.length]) {                //如果这个fragment需要更新                FragmentTransaction ft = fm.beginTransaction();                //移除旧的fragment                ft.remove(fragment);                //换成新的fragment                fragment = list_fragment.get(position % list_fragment.size());                //添加新fragment时必须用前面获得的tag ❶                ft.add(container.getId(), fragment, fragmentTag);                ft.attach(fragment);                ft.commit();                //复位更新标志                fragmentsUpdateFlag[position % fragmentsUpdateFlag.length] = false;            }            return fragment;        }    }}

0 0
原创粉丝点击