关于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()方法。
<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()方法。
相关文章推荐
- jQuery对AJAX的封装——$.ajax
- PHP总结:几个陷阱
- c++第3次上机实验
- Kafka组件监控
- UDP通讯程序设计---6
- 24. Swap Nodes in Pairs
- wps word新建页背景由淡蓝色变回白色
- JS获取IP地址对应地区、输入监听、字符串的替换
- Lighthouse
- jquery windows.onload与$(document).ready之间的区别
- 帧中继配置实例
- Linux内核分析8
- Lighthouse
- 第二十五章 中介者模式
- 每天一个linux命令(3):ls命令
- TCP通讯程序设计---5
- leetcode笔记:Reconstruct Itinerary
- LeetCode Plus One 66
- 转载/记录异常日志的7条规则
- JS 替换 window.onload 的 document.ready