HorizontalScrollView 使用 实现textview和viewpager的联动
2016-06-28 10:46
447 查看
设置初始化信息
// 设置主界面// 隐藏下拉bar
horizontalScrollView.setHorizontalScrollBarEnabled(false);
// 设置导航分类
setNavigationTypes();
// 设置viewpager
setViewPagerDetails();
设置导航信息
// 设置导航private void setNavigationTypes() {
/** ============================================================ */
// 获得屏幕总宽度
DisplayMetrics metrics = new DisplayMetrics();// 新建 展示 度量
getWindowManager().getDefaultDisplay().getMetrics(metrics);// 获得宽度
screenWidth = metrics.widthPixels;// 获得 屏幕宽度像素
System.out.println("metrics.widthPixels宽度像素是:" + screenWidth);
/** ============================================================ */
// 设置每一个item的宽度
itemWidth = screenWidth / 6;
// 设置每一个item
for (int i = 0; i < list_typeUrls.size(); i++) {
// 创建TextView的实例
final TextView typeTextView = new TextView(this);
// 设置
typeTextView.setText(list_typeUrls.get(i).getType());// 设置内容
typeTextView.setTextSize(16.0f);// 设置字体大小
typeTextView.setPadding(15, 6, 15, 6);// 设置字的内边距padding值
typeTextView.setGravity(Gravity.CENTER);// 设置文字居中
// 第一个默认是红色
if (i == 0) {
typeTextView.setTextColor(Color.RED);
} else {
typeTextView.setTextColor(Color.BLACK);
}
// 设置每一个的监听事件
typeTextView.setOnClickListener(new OnClickListener() {
/** 字体颜色的改变可以只在viewpager中设置,因为只要点击就可以触发pagerchangelister */
@Override
public void onClick(View v) {
for (int j = 0; j < linearLayout_types.getChildCount(); j++) {
TextView tv = (TextView) linearLayout_types
.getChildAt(j);
if (tv == v) {// 如果选择的这个控件正好是当前的控件
// typeTextView.setTextColor(Color.RED);// 把自己变为红色
// 点击后要设置转换为对应的viewpager
vp_details.setCurrentItem(j);
} else {
// tv.setTextColor(Color.BLACK);// 把上一个变为黑色
}
}
}
});
// 添加进布局
linearLayout_types.addView(typeTextView);
}
}
设置viewpager的详细
// 设置viewpagerprivate void setViewPagerDetails() {
// 实例化一个要放入viewpager的list集合
List<Fragment> list_vpFragments = new ArrayList<Fragment>();
for (int i = 0; i < list_typeUrls.size(); i++) {
NewsDetailFragment newsDetailFragment = new NewsDetailFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("newsTypeUrlsData", list_typeUrls.get(i));
newsDetailFragment.setArguments(bundle);
list_vpFragments.add(newsDetailFragment);
}
// 设置适配器
NewsDetailPagerAdapter adapter = new NewsDetailPagerAdapter(
getSupportFragmentManager(), list_vpFragments);
vp_details.setAdapter(adapter);
// 设置监听
vp_details.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// 被选择就要设置type 1.变红 2.在屏幕中央
changeTypeTextView(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
}
});
}
选择时会在屏幕中央的数据
// 被选择就要设置type 1.变红 2.在屏幕中央protected void changeTypeTextView(int positon) {
// 获得应该设置的textview
TextView tv = (TextView) linearLayout_types.getChildAt(positon);
for (int i = 0; i < linearLayout_types.getChildCount(); i++) {
TextView tv0 = (TextView) linearLayout_types.getChildAt(i);
// 设置颜色
if (i == positon) {
tv0.setTextColor(Color.RED);
// 设置在屏幕中央
int tv_measuredWidth = tv0.getMeasuredWidth();// 获得自身像素宽度
int tv_leftMeasuredWidth = tv0.getLeft();// 获得控件左侧像素宽度
int moveSizeX = tv_leftMeasuredWidth + tv_measuredWidth / 2
- screenWidth / 2;// 得出要左移的宽度(分正负)
horizontalScrollView.smoothScrollTo(moveSizeX, 0);// 开始移动(参数X,参数Y)
} else {
tv0.setTextColor(Color.BLACK);
}
}
}
相关文章推荐
- web.xml配置详解
- jquery checkbox取值和赋值
- nginx启动、重启、关闭
- 如何对集合中的某一字段进行排序
- 分布式消息最终一致性事务
- 15 C#中的条件执行,if else
- java安全框架-Shiro学习笔记(五)-Shiro集成Web
- spring boot 指定maven package命令生成的jar文件名
- Java如何Excel转Html
- WebStorm2016.1 破解 激活
- Python 生成器(generator)
- 看github老库的时候遇到的问题以及解决方法
- swiper的基础使用(十)
- spring使用log4j打印日志
- 搭建Windows下的Git Server
- Java json串生成及转bean
- Android DownloadManager 系统下载器实现APP升级功能
- 这应该是迄今为止最全的一份Java就业指导书
- c++ stringstream
- ORB_SLAM2在Android上的移植过程