viewpager+fragment+HorizontalScrollView
xml布局
<RelativeLayout
android:id="@+id/rl_column"
android:layout_width="match_parent"
android:layout_height="40dp" >
<HorizontalScrollView
android:id="@+id/hsv"
android:layout_width="50dp"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/iamge_glide"
android:scrollbars="none"
android:background="#f0f0f0" >
<LinearLayout
android:id="@+id/id_gallery"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal" />
</HorizontalScrollView>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
activity代码
private HorizontalScrollView hsv;
private ViewPager vp;
String[] name = new String[] { "推荐", "热点", "娱乐", "科技", "汽车", "体育", "财经",
"军事", "国际", "时尚", "视屏", "社会" };
private SlidingMenu sm;
private LinearLayout mGallery;
private int mScreenWidth;
private int mItemWidth = 0;
private ArrayList<String> list;
private int columnSelectIndex = 0;
private ArrayList<Fragment> fragments = new ArrayList<Fragment>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new);
initView();
initData();
initTabColumn();
initFragment();
}
private void initTabColumn() {
// TODO Auto-generated method stub
initScrollView();
int count = list.size();
for (int i = 0; i < count; i++) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
mItemWidth, LayoutParams.WRAP_CONTENT);
params.leftMargin = 5;
params.rightMargin = 5;
TextView columnTextView = new TextView(NewActivity.this);
columnTextView.setGravity(Gravity.CENTER);
columnTextView.setPadding(5, 5, 5, 5);
columnTextView.setId(i);
columnTextView.setText(list.get(i));
// 设置默认标签为选中状态
if (columnSelectIndex == i) {
columnTextView.setSelected(true);
columnTextView.setTextColor(Color.RED);
}
/*
* 设置点击事件监听
*/
columnTextView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
for (int j = 0; j < mGallery.getChildCount(); j++) {
TextView localView = (TextView) mGallery.getChildAt(j);
if (localView != v) {
localView.setSelected(false);
} else {
localView.setSelected(true);
vp.setCurrentItem(j);
}
}
int index = mGallery.indexOfChild(v);
}
});
mGallery.addView(columnTextView, i, params);
}
}
//把数组添加到list集合中
private void initData() {
list = new ArrayList<String>();
for (int i = 0; i < name.length; i++) {
list.add(name[i]);
}
System.out.println(list);
}
private void initView() {
//找控件id
image_head = (ImageView) findViewById(R.id.image_head);
right_head = (ImageView) findViewById(R.id.right_head);
hsv = (HorizontalScrollView) findViewById(R.id.hsv);
right_head = (ImageView) findViewById(R.id.iamge_glide);
vp = (ViewPager) findViewById(R.id.vp);
mGallery = (LinearLayout) findViewById(R.id.id_gallery);
//点击图片展示侧滑菜单
image_head.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sm.showMenu();//显示侧滑菜单
}
});
public void initFragment() {
fragments.clear();
int count = list.size();
for (int i = 0; i < count; i++) {//根据list集合的长度创建fragment
Bundle data = new Bundle(); //传值给每个fragment
data.putString("text", list.get(i));
data.putInt("id", i);
MyFragment f = new MyFragment();
f.setArguments(data);
fragments.add(f);
}
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(
getSupportFragmentManager(), fragments);
vp.setAdapter(adapter);
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
vp.setCurrentItem(arg0);
selectTab(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
private void selectTab(int tab_position) {
// TODO Auto-generated method stub
columnSelectIndex = tab_position;
View currTextView = mGallery.getChildAt(tab_position);
int w = currTextView.getMeasuredWidth();
int l = currTextView.getLeft();
int i2 = l + w / 2 - mScreenWidth / 2;
hsv.smoothScrollTo(i2, 0);
// 判断是否选中
for (int i = 0; i < mGallery.getChildCount(); i++) {
TextView eveTxetView = (TextView) mGallery.getChildAt(i);
boolean ischeck;
if (i == tab_position) {
ischeck = true;
eveTxetView.setTextColor(Color.RED);
} else {
ischeck = false;
eveTxetView.setTextColor(Color.BLACK);
}
eveTxetView.setSelected(ischeck);
}
}
private void initScrollView() {
mScreenWidth = NewsUtils.getWindowsWidth(NewActivity.this);
mItemWidth = mScreenWidth / 7;//计算HorizontalScrollView可以展示几个
mGallery.removeAllViews();
}
}
//NewsUtils内的计算代码
public class NewsUtils {
/** 获取屏幕的宽度 */
public final static int getWindowsWidth(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}
}
viewpager+fragment+HorizontalScrollView的更多相关文章
- viewpager+fragment+HorizontalScrollView详细版
XML布局 <HorizontalScrollView android:id="@+id/hsv" android:layout_ ...
- Android ViewPager + Fragment的布局
ViewPager And Fragment 1.之前有篇博客是讲ViewPager的用法的:http://www.cnblogs.com/liangstudyhome/p/3773156.html ...
- ViewPager+Fragment取消预加载(延迟加载)(转)
原文:http://www.2cto.com/kf/201501/368954.html 在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragmen ...
- Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...
- Android - ViewPager+Fragment初始化问题
Android应用开发中,经常会用到ViewPager + Fragment,虽然效果不错,但随之而来的还有一些问题,下面就说说其中的初始化问题. ViewPager初始化时会预加载前后的2个页面,即 ...
- Android ViewPager Fragment使用懒加载提升性能
Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Androi ...
- ViewPager -- Fragment 切换卡顿 性能优化
当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即 Fragment需要加载UI内容,而又频繁地切换Fragment, ...
- viewpager viewpager+fragment
内页面 不单写页面 viewpager+布局 import java.util.ArrayList; import java.util.List; import android.os.Bundl ...
- 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activ ...
随机推荐
- C# RichTextBox 滚动条 滚动到最后一行
使用RichTextBox控件用于显示数据时,滚动条只停留在开头,而我希望能够一直更新,显示最后一行的内容.解决方法记录于此. 转载自以下链接: http://blog.csdn.net/xelone ...
- VMware (威睿) 虚拟化产品简介
VMware vSphere 是VMware(威睿)的一个虚拟化产品,VMware vSphere 是业界领先且最可靠的虚拟化平台.vSphere将应用程序和操作系统从底层硬件分离出来,从而简化了 I ...
- Basic认证
Basic 概述 Basic 认证是HTTP 中非常简单的认证方式,因为简单,所以不是很安全,不过仍然非常常用. 当一个客户端向一个需要认证的HTTP服务器进行数据请求时,如果之前没有认证过,HTTP ...
- css 滑动按钮样式
<div class="pub_switch_box"> <input type="checkbox" id="pub_switch ...
- JAVA字符串的GZIP压缩解压缩
package com.gzip; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import ...
- WebService之Axis2(4):二进制文件传输
在<WebService大讲堂之Axis2(2):复合类型数据的传递>中讲过,如果要传递二进制文件(如图像.音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式 ...
- Wcf Restful Service服务搭建
目的 使用Wcf(C#)搭建一个Restful Service 背景 最近接到一个项目,客户要求使用Restful 方式接收到数据,并对数据提供对数据的统计显示功能,简单是简单,但必须要使用Restf ...
- eclipse Project facet Java version 1.8 is not supported.
在移植eclipse项目时,如果遇到 “Project facet Java version 1.7 is not supported.” 项目中的jdk1.7不支持.说明项目是其他版本jdk编译的, ...
- PostgreSQL 一主两备节点(两备节点为同步节点)故障恢复
PostgreSQL 同步复制及故障恢复 10.2.208.10:node1:master 10.2.208.11:node2:standby1 同步 10.2.208.12:node3:stand ...
- Summary: Process & Tread
refer to http://www.programmerinterview.com/index.php/operating-systems/thread-vs-process/ A process ...