Horizontal+ViewPager
来源:互联网 发布:sql中date转换为string 编辑:程序博客网 时间:2024/06/13 23:06
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bgColor"
android:orientation="vertical">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/white">
<com.alidao.glory.widget.MyHorizontalScrollView
android:id="@+id/HorizontalScrollView"
android:layout_width="match_parent"
android:scrollbars="none"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/tabLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</com.alidao.glory.widget.MyHorizontalScrollView>
<ImageView
android:id="@+id/cursor1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:contentDescription="@null"
android:scaleType="fitCenter"
android:src="@drawable/scrollview_left"
android:visibility="gone"/>
<ImageView
android:id="@+id/cursor2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:contentDescription="@null"
android:scaleType="fitCenter"
android:src="@drawable/scrollview_right"/>
</RelativeLayout>
<TextViewstyle="@style/divider_horizontal"/>
<android.support.v4.view.ViewPager
android:id="@+id/listPager"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="@android:color/white"/>
</LinearLayout>
其次:创建下方的Viewpager是由多个fragment组成
private void createViewPager(final ArrayList<NewsTabBean> list) {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
tabLayout.removeAllViews();
tabList.clear();
// 创建Tab
for (int i = 0; i < list.size(); i++) {
fragments.add(NewsFragment.instance(list.get(i).id));
if (BaseActivity.getScreenWidth(context) < 720) {
MaxTab = 3;
} else {
MaxTab = 4;
}
if (list.size() <=MaxTab) {// 根据屏幕像素显示多少个
tabWidth = BaseActivity.getScreenWidth(context) / list.size();
} else {
tabWidth = BaseActivity.getScreenWidth(context) /MaxTab;
}
LayoutParams paramss = new LayoutParams(tabWidth, -2);
TextView tv = new TextView(context);
tv.setLayoutParams(paramss);
tv.setFilters(new InputFilter[] {new InputFilter.LengthFilter(4) });
tv.setBackgroundResource(R.drawable.tab_selector);
tv.setClickable(true);
tv.setGravity(Gravity.CENTER);
tv.setPadding(10, 10, 10, 10);
tv.setSingleLine(true);
tv.setEllipsize(TruncateAt.MARQUEE);
tv.setText(list.get(i).name);
// if(BaseActivity.getScreenWidth(context)<720){
// tv.setTextSize(17);
// }else{
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources()
.getDimensionPixelSize(R.dimen.inter_content_font_size2));
// }
if (i == 0) {
tv.setTextColor(getResources().getColor(R.color.red));
} else
tv.setTextColor(Color.BLACK);
tv.setTag(i);
tabList.add(tv);
tabLayout.addView(tv);
if (i != list.size() - 1) {// 分隔线
TextView divider =new TextView(context);
LayoutParams params =new LayoutParams((int) 1, -1);
params.topMargin = 10;
params.bottomMargin = 10;
divider.setLayoutParams(params);
divider.setBackgroundResource(android.R.color.darker_gray);
tabLayout.addView(divider);
}
tv.setOnClickListener(new OnClickListener() {
@Override
publicvoid onClick(View arg0) {
for (TextView textView :tabList) {
textView.setTextColor(Color.BLACK);
}
TextView tv = (TextView) arg0;
tv.setTextColor(getResources().getColor(R.color.red));
int position = (Integer) arg0.getTag();
listPager.setCurrentItem(position);
}
});
}
// 创建内容
adapter.setList(fragments);
findViewById(R.id.progressBarLayout).setVisibility(View.GONE);
}
这是viewpager的adapter
public class FragmentAdapterextends FragmentPagerAdapter {
ArrayList<Fragment> fragments;
public FragmentAdapter(FragmentManager fm) {
super(fm);
fragments =new ArrayList<Fragment>();
}
public void setList(List<Fragment> fragments) {
this.fragments = (ArrayList<Fragment>) fragments;
notifyDataSetChanged();
}
@Override
public Fragment getItem(int position) {
returnfragments.get(position);
}
@Override
public int getCount() {
returnfragments.size();
}
}
最后就是:联动处理,当viewpager变化的时候,上面的scrollview如何移动
private void initData() {
adapter = new FragmentAdapter(getSupportFragmentManager());
listPager.setAdapter(adapter);
listPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
publicvoid onPageSelected(final int position) {
// 根据tab数量显示
if (tabWidth * position >=tabWidth * (MaxTab - 1)
|| position <lastPosition)
horizontalScrollView.smoothScrollTo(tabWidth
* (position - (MaxTab - 2)), 0);
lastPosition = position;
for (int i = 0; i <tabList.size(); i++) {
TextView textView =tabList.get(i);
if (i == position) {
textView.setTextColor(getResources().getColor(
R.color.red));
} else {
textView.setTextColor(Color.BLACK);
}
}
}
@Override
publicvoid onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
publicvoid onPageScrollStateChanged(int arg0) {
}
});
注:此分享代码不完整,只为思想共享,如果有问题欢迎私信交流。。。
- Horizontal+ViewPager
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- Horizontal+异步+pullTorefresh+viewPager(本地图片)+每页都有数据
- HorizontalScrollView Horizontal水平滑动栏和今日头条ViewPager的联动
- Horizontal---ProgressBar
- CSS Horizontal Align
- Jqurey Image Horizontal Move
- Android Horizontal ListView
- jasperReport分栏报表制作---Horizontal
- <hr/> horizontal rule(水平线)
- constraints.fill=GridBagConstraints.HORIZONTAL;
- 自定义水平进度条Horizontal ProgressBar
- CSS 水平对齐(Horizontal Align)
- Horizontal and vertical center alignment
- Android horizontal+listview 横向显示
- Viewpager
- ViewPager
- 【转】Android 应用程…
- Android 项目 命令编译
- Linux下硬盘挂载
- Ubuntu命令杀死进程
- Ubuntu实时流量查看命令
- Horizontal+ViewPager
- RS-232/485转换器的复用方案
- Ubuntu常用的命令
- 64位Ubuntu不能使用ADB的问题
- Ubuntu 网络限速
- Eclipse文件转码插件
- SVN 命令使用
- Ubuntu 编译android GCC降级
- Ubuntu下限速