您的位置:首页 > 其它

关于Tab标签的一些实现方法

2016-04-11 22:59 225 查看
1.在ViewPager中直接使用PagerTabStrip ,如下图:

<android.support.v4.view.ViewPager

android:id="@+id/vp"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

>

<android.support.v4.view.PagerTabStrip

android:id="@+id/pager_tab_strip"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="top"

android:background="#ffffff"

android:textColor="#000"

android:paddingTop="4dp"

android:paddingBottom="4dp" />

</android.support.v4.view.ViewPager>

注:import android.support.v4.app.FragmentStatePagerAdapter;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;



然后在要实现的activity中的oncreate()方法中,写入下面代码:

mViewPager=(ViewPager) findViewById(R.id.vp);

pager_tab_strip=(PagerTabStrip) findViewById(R.id.pager_tab_strip);

// 设置标签下划线的颜色

pager_tab_strip.setTabIndicatorColor(getResources().getColor(R.color.indicatorcolor));

mViewPager.setAdapter(new MainAdpater(getSupportFragmentManager()));

private class MainAdpater extends FragmentStatePagerAdapter{

public MainAdpater(FragmentManager fm) {

super(fm);

}

// 每个条目返回的fragment

// 0

@Override

public Fragment getItem(int position) {

// 通过Fragment工厂 生产Fragment

return FragmentFactory.createFragment(position);

}

// 一共有几个条目

@Override

public int getCount() {

return tab_names.length;

}

// 返回每个条目的标题

@Override

public CharSequence getPageTitle(int position) {

return tab_names[position];

}


}

2运用第三方开源框架ViewIndicator

先在布局中写如下布局:

<LinearLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<com.viewpagerindicator.TabPageIndicator

android:id="@+id/indicator"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_weight="1" />

<ImageButton

android:id="@+id/btn_next"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:background="@android:color/transparent"

android:padding="5dp"

android:src="@drawable/news_cate_arr" />

</LinearLayout>

<android.support.v4.view.ViewPager

android:id="@+id/vp_menu_detail"

android:layout_width="match_parent"

android:layout_height="match_parent" />



然后在activity中写如下代码:
private static final String[] CONTENT = new String[] { "Recent", "Artists", "Albums", "Songs", "Playlists", "Genres" };

接着在要实现的activity中写入下面代码:

FragmentPagerAdapter adapter = new GoogleMusicAdapter(getSupportFragmentManager());

ViewPager pager = (ViewPager)findViewById(R.id.pager);

pager.setAdapter(adapter);

TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);

indicator.setViewPager(pager);//必须在page设置好Adapter之后才能关联

class GoogleMusicAdapter extends FragmentPagerAdapter {

public GoogleMusicAdapter(FragmentManager fm) {

super(fm);

}

@Override

public Fragment getItem(int position) {

return TestFragment.newInstance(CONTENT[position % CONTENT.length]);

}

@Override

public CharSequence getPageTitle(int position) {

return CONTENT[position % CONTENT.length].toUpperCase();

}

@Override

public int getCount() {

return CONTENT.length;

}

}



事件分发机制

进入TabPagerIndicator,重写dispatchTouchEvent()

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