大概与新浪热门微博相似我就照着写了,自我感觉很好用,趁公司的人都在测试就给大家分享一下咯。

效果如下图:

使用控件:HorizontalScrollView和ViewPager

代码如下:

xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><HorizontalScrollViewandroid:id="@+id/sv"android:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none"><LinearLayoutandroid:id="@+id/ly"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"></LinearLayout></HorizontalScrollView><TextViewandroid:layout_width="match_parent"android:layout_height="2dp"android:background="#bdbdbd" /><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

Activity(注意看注释)

public class MainActivity extends FragmentActivity {private HorizontalScrollView sv;private ViewPager vp;private TextView tv;private LinearLayout ly;private FragmentAdapter mFragmentAdapter;private CommonFragment fragment;private List<String> tabel;private List<TextView> tvList;private List<Fragment> fList;private Drawable drawableLeft;private Drawable drawableRight;/*** ViewPager的当前选中页*/private int currentIndex;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sv= (HorizontalScrollView) findViewById(R.id.sv);vp = (ViewPager) findViewById(R.id.viewpager);ly = (LinearLayout) findViewById(R.id.ly);drawableLeft = getResources().getDrawable(R.mipmap.ico_arrow_right);drawableRight = getResources().getDrawable(R.mipmap.ico_arrow_left);drawableLeft.setBounds(0, 0, drawableLeft.getMinimumWidth(), drawableLeft.getMinimumHeight()); //设置边界drawableRight.setBounds(0, 0, drawableRight.getMinimumWidth(), drawableRight.getMinimumHeight()); //设置边界getTabel();}//得到标签public void getTabel() {tabel = new ArrayList<>();tvList = new ArrayList<>();for (int i = 0; i < 20; i++) {tabel.add("测试" + i);}// TODO 这里记得判断获得标签的数目不为0才可以获得textview和fragment,此处数据模拟,动态获取需加判断for (int i = 0; i < tabel.size(); i++) {tv = new TextView(this);tv.setText(tabel.get(i));tv.setTextSize(16);tv.setPadding(35, 15, 35, 15);tv.setGravity(Gravity.CENTER);tv.setTextColor(0xff333333);ly.addView(tv);tvList.add(tv);final int finalI = i;tv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {change(tvList.get(finalI));vp.setCurrentItem(finalI);}});}//得到fragmentgetFragment(tabel.size());}public void getFragment(int num) {fList = new ArrayList<>();for (int i = 0; i < num; i++) {fragment = new CommonFragment();Bundle bundle = new Bundle();bundle.putString("content", tabel.get(i));fragment.setArguments(bundle);fList.add(fragment);}mFragmentAdapter = new FragmentAdapter(this.getSupportFragmentManager(), fList);vp.setAdapter(mFragmentAdapter);vp.setCurrentItem(0);vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {/*** state滑动中的状态 有三种状态(0,1,2) 1:正在滑动 2:滑动完毕 0:什么都没做。*/@Overridepublic void onPageScrollStateChanged(int state) {}/*** position :当前页面,及你点击滑动的页面 offset:当前页面偏移的百分比* offsetPixels:当前页面偏移的像素位置*/@Overridepublic void onPageScrolled(int position, float offset,int offsetPixels) {/*** 利用currentIndex(当前所在页面)和position(下一个页面)以及offset来* 设置mTabLineIv的左边距 滑动场景:* 记3个页面,* 从左到右分别为0,1,2* 0->1; 1->2; 2->1; 1->0*/}@Overridepublic void onPageSelected(int position) {change(tvList.get(position));sv.requestChildFocus(tvList.get(position),tvList.get(position));}});change(tvList.get(0));}/*** 重置颜色*/private void change(TextView v) {restoreTabs();v.setCompoundDrawables(drawableLeft, null, drawableRight, null);v.setCompoundDrawablePadding(16);v.setTextColor(0xffda1a17);}private void restoreTabs() {for (int i = 0; i <tvList.size() ; i++) {tvList.get(i).setTextColor(0xff333333);tvList.get(i).setCompoundDrawables(null, null, null, null);}}
}

其实代码已经很全了,如果还有不懂得或者想偷懒的可以直接去这里下载http://download.csdn.net/detail/ccstar1/9526141。最后说一个刚刚优化的问题吧,就是当类似edittext和button同时出现的时候,先编辑edittext再点击button时候发现软键盘还在,那么在点击button的监听里加上InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);  imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);  就ok啦!大家不要怪我下载那个需要一个积分,只是平时我要下载其他的老要积分,攒点好下载,嘿嘿,如果想下载没积分可以私信我,到时候给你发。

仿新浪热门微博页面动态添加Tab标签与Fragment联动的实现相关推荐

  1. html注册新浪邮箱代码,JS仿新浪邮箱点击联系人添加Email地址

    新浪邮箱添加功能 var ev={}; var flyDiv="bxAddrFly"; var inceptDiv="SendAddress"; var add ...

  2. Dwz点击左侧菜单动态添加Tab标签图标

    此篇文章是基于ztree实现,若是dwz与ztree未整合,请先按照<DWZ和zTree整合(实现版)>文章整合. 需求描述: 点击左侧树形菜单(target=navTab)时,在左侧Ta ...

  3. DOM--操作元素案例:分时显示不同的图片以及问候语;仿淘宝关闭标签案例;隐藏显示文本框内容;仿新浪注册页面中密码长度的判定

    分时显示不同的图片以及问候语 分析: 根据不同的时间来判断,所以需要获取到系统的时间. 利用分支语言来设置不同的图片 需要更换不同的图片,因此需要操作img的元素src 需要一个div来显示不同问候语 ...

  4. 仿新浪抢工长装修招标网站源码

    仿新浪抢工长装修招标网站源码 老工长装修网源码 装修网站源码 强大的装修装潢公司网站源码,功能很全,有易于管理的后台,和页面的精美.后台功能强大,带会员系统,可以完整商业运营. 源码虽然不大但是没有错 ...

  5. android仿新浪引导界面

    最近在研究如何做出仿微信,仿新浪等应用,第一次安装使用的使用展示应用程序的新特性和用法. 实现功能:左右手势滑屏 底部小圆点随当前显示页跳动 浮动按钮显示.当触屏事件发生显示,否则就渐渐消失 先转个文 ...

  6. 仿新浪抢工长装修招标网站源码老工长装修网源码装修网站源码

    仿新浪抢工长装修招标网站源码 老工长装修网源码 装修网站源码 源码虽然不大但是没有错版,测试运行都是很正常的.希望大家能喜欢. 源码里面的配图我都没有改,很多失效的图大家可以自行去添加... 下载链接 ...

  7. 长微博工具-长微博生成器-新浪长微博-腾讯长微博-长微博转换器

    长微博,长微博生成器,长微博工具,新浪长微博,长微博转换器,新浪长微博生成器,新浪长微博工具,文字转换器 http://www.cwbgj.com/ 这是一个新兴的词汇,是随着微博的发展才出现的.正常 ...

  8. 一种无需留坑为页面动态添加View方案

    在Activity或Fragment页面动态添加View,有其应用场景,比如配合运营在首页动态插入H5活动页(如下图手淘的雪花例示[1]),在页面头部插入通知View等.本文结合ActivityLif ...

  9. 关于页面动态添加控件(转)

    最近看到很多问题都是关于页面动态添加控件,页面postback以后,就取不到这些控件了.其实每次在页面上动态添加控件(或者在数据控件上动态添加列),它们的状态是不会被添加到页面的ViewState中去 ...

最新文章

  1. Cstring的使用
  2. 17篇论文入选CVPR 2019,百度AI都在关注什么?(附论文地址)
  3. 最大排列问题的算法实现(Python)究竟最后调换位置的有哪几个?
  4. websocket学习笔记
  5. Java 并发---ConcurrentHashMap
  6. pytorch对卷积神经网络常见操作
  7. 浏览器本地存储(cookie、sessionStorage和localStorage)
  8. 一文搞懂前端对象的深拷贝与浅拷贝
  9. linux 运行文件
  10. 【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)
  11. 弹性地基梁板的计算理论_第八章 弹性地基梁的计算理论
  12. c语言中输出以e为底的指数,C语言中 ln(以自然对数e为底) lg(以十为底) 以及logab(以a为底,b为真数)的相关知识...
  13. 如何处理微信域名防封
  14. 【网络设备】H3C FW V7:安全域与域间策略
  15. 现行各主流语言的特点
  16. [小记] 微信小程序 - 人脸识别前端(一)初体验
  17. 【操作系统】操作系统的概念、功能和目标
  18. Oracle数据库全备份和增量备份Windows
  19. 高等数学 —— 无穷小与无穷大
  20. 如何在嵌入式Linux系统中使用4G LTE模组?

热门文章

  1. MakeItTalk: 让图像开口说话!
  2. Selenium的文件上传和操作Cookie等方法_Sinno_Song_新浪博客
  3. 好东西,就要一起分享。
  4. WXS脚本之WXS语法
  5. 力天创见区域客流人数统计
  6. Java读取环境变量
  7. ISO/IEC 14443协议浅谈:TYPE A与TYPE B
  8. Apache 502 Bad Gateway
  9. 网络资源的定义--URI,URL,URN
  10. bytebuddy实现原理分析 源码分析 (二)