viewpager+fragment+HorizontalScrollView详细版
XML布局
<HorizontalScrollView
android:id="@+id/hsv"
android:layout_width="fill_parent"
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 LinearLayout mGallery;
private int mScreenWidth;
private int mItemWidth = 0;
private ArrayList<String> list;
private int columnSelectIndex = 0;
private ArrayList<Fragment> fragments = new ArrayList<Fragment>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
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(MainActivity.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() {
// 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(MainActivity.this);
mItemWidth = mScreenWidth / 7;//计算HorizontalScrollView可以展示几个
mGallery.removeAllViews();
}
//NewsUtils中的计算
public final static int getWindowsWidth(Activity activity) {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
return dm.widthPixels;
}
//MyFragmentPagerAdapter 适配器中的代码
package com.wt.ada;
import java.util.ArrayList;
import java.util.List;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.ViewGroup;
public class MyFragmentPagerAdapter extends FragmentPagerAdapter{
private List<Fragment> fragments;
private FragmentManager fm;
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
public MyFragmentPagerAdapter(FragmentManager fm,ArrayList<Fragment> fragments) {
super(fm);
this.fm = fm;
this.fragments = fragments;
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return fragments.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
System.out.println(fragments.size());
return fragments.size();
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return POSITION_NONE;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Object obj = super.instantiateItem(container, position);
return obj;
}
}
viewpager+fragment+HorizontalScrollView详细版的更多相关文章
- viewpager+fragment+HorizontalScrollView
xml布局 <RelativeLayout android:id="@+id/rl_column" android:layout_width=&q ...
- ViewPager+Fragment取消预加载(延迟加载)(转)
原文:http://www.2cto.com/kf/201501/368954.html 在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragmen ...
- ViewPager+Fragment取消预加载(延迟加载)
在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragment有个不好或者太好的地方.例如你在ViewPager中添加了三个Fragment,当加载V ...
- Android开发之漫漫长途 Fragment番外篇——TabLayout+ViewPager+Fragment
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- ViewPager Fragment 懒加载 可见 总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android ViewPager + Fragment的布局
ViewPager And Fragment 1.之前有篇博客是讲ViewPager的用法的:http://www.cnblogs.com/liangstudyhome/p/3773156.html ...
- iOS App上架流程(2016详细版)
iOS App上架流程(2016详细版) 原文地址:http://www.jianshu.com/p/b1b77d804254 感谢大神整理的这么详细 一.前言: 作为一名iOSer,把开发出来的Ap ...
- 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...
- Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...
随机推荐
- .NET 中的委托
1.1.1 定义 委托是一种引用方法的类型.一旦为委托分配了方法,委托将与该方法具有完全相同的行为.委托方法的使用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示: //Code in C# ...
- js运算之比较大小
1.大于>和小于< var box = 3 > 2;//关系运算符大多返回的是一boolean值. alert(box); //true 1.2不同类型的数据比较 var box = ...
- iOS: 悬浮的条件筛选框使用二
一.介绍: 在前面已经介绍了一种条件悬浮框,使用的是tableView的Plain分组样式实现的,因为这是tableView本身就具备的功能,分组悬浮效果.这次我来介绍第二种更加简单的方法,采用两个S ...
- Android 一个漂亮的Android日期和时间选择器:DateTimePicker
DateTimePicker这个类库包含了漂亮的 DatePicker 和 TimePicker ,类似于在新 Google Agenda App中看到的. 项目主页:http://www.open- ...
- zookeeper安装和应用场合(名字,配置,锁,队列,集群管理)
安装和配置详解 本文介绍的 Zookeeper 是以 3.2.2 这个稳定版本为基础,最新的版本可以通过官网http://hadoop.apache.org/zookeeper/ 来获取,Zookee ...
- Linux是怎么启动的
按下电源按钮的直到欢迎页出来之后,linux总共做的事可以分为五步来完成. 1. BIOS加电自检: 加电自检,检测硬件设备.然后按照cmos上面的顺序来搜索处在活动状态下的可以引导的设备.可以是光驱 ...
- Map小记
Corelocation地理定位Map Kit地图展示 在移动互联网的时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边找餐馆找酒店,找银行,找电影院在上述应用中都用到了地图 ...
- C# --2007Access链接字符串
public static string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDi ...
- 第二篇 Replication:分发服务器的作用
本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程. ...
- [SharpDevelop]菜单状态更新
方式一 在Idle方法中更新 void OnApplicationIdle(object sender, EventArgs e) { // Use the Idle event to update ...