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的更多相关文章

  1. viewpager+fragment+HorizontalScrollView详细版

    XML布局 <HorizontalScrollView            android:id="@+id/hsv"            android:layout_ ...

  2. Android ViewPager + Fragment的布局

    ViewPager And Fragment 1.之前有篇博客是讲ViewPager的用法的:http://www.cnblogs.com/liangstudyhome/p/3773156.html ...

  3. ViewPager+Fragment取消预加载(延迟加载)(转)

    原文:http://www.2cto.com/kf/201501/368954.html 在项目中,都或多或少地使用的Tab布局,所以大都会用到ViewPager+Fragment,但是Fragmen ...

  4. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  5. Android - ViewPager+Fragment初始化问题

    Android应用开发中,经常会用到ViewPager + Fragment,虽然效果不错,但随之而来的还有一些问题,下面就说说其中的初始化问题. ViewPager初始化时会预加载前后的2个页面,即 ...

  6. Android ViewPager Fragment使用懒加载提升性能

     Android ViewPager Fragment使用懒加载提升性能 Fragment在如今的Android开发中越来越普遍,但是当ViewPager结合Fragment时候,由于Androi ...

  7. ViewPager -- Fragment 切换卡顿 性能优化

    当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快速切换ViewPager,即 Fragment需要加载UI内容,而又频繁地切换Fragment, ...

  8. viewpager viewpager+fragment

    内页面  不单写页面   viewpager+布局 import java.util.ArrayList; import java.util.List; import android.os.Bundl ...

  9. 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析

    ViewPager中切换界面Fragment被销毁的问题分析   1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3   2.Fragment生命周期以及与Activ ...

随机推荐

  1. JSONModel 遇见关键字为id或者description

    像id.description这样的,都是系统自带的,要解析它,得特殊处理一下.我用的是JSONModel { "contentList": [ { "id": ...

  2. 我的第一个WCF程序,很简单适合我等菜鸟

    1.首先我罗列一下网站搜索并经过自己理解的WCF的含义: 1)WCF:(WIndows Communication Foundation)是由微软是由微软发展的一组数据通信的应用开发接口,可以翻译为W ...

  3. busybox sz rz命令

    之前板子和电脑之间传送文件的时候都是通过tftp网络下载.所以找了一下在文件系统中使用串口上传文件的方法. rz和sz命令使用zmoderm协议,SecureCRT也用提供这个命令的支持.由于是串口, ...

  4. http://blog.csdn.net/yangyuhan156/article/details/48899439

    http://blog.csdn.net/yangyuhan156/article/details/48899439

  5. 深入理解OpenGL拾取模式(OpenGL Picking)

    深入理解OpenGL拾取模式(OpenGL Picking) 本文转自:http://blog.csdn.net/zhangci226/article/details/4749526 在用OpenGL ...

  6. javascript:void(0)和javascript:;的用法

    一.JavaScript:void(0) 我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢 ...

  7. css页面布局

    写在前面: 页面布局整体上可以分为两类:固定宽度(一般固定960px):流式布局:将流式布局转换为固定布局很容易,只需要外围再包括一个div,为其设置宽度即可. html默认的布局方式是将每个块状标签 ...

  8. Hadoop学习笔记: 安装配置Hadoop

    安装前的一些环境配置: 1. 给用户添加sudo权限,输入su - 进入root账号,然后输入visudo,进入编辑模式,找到这一行:"root ALL=(ALL) ALL"在下面 ...

  9. CNContact对通讯录的基本使用(增删改查)

    /** * 注意:iOS9才有能使用 * 首先在工程里导入ContactsUI.framework和Contacts.framework两个框架 * * * 源代码的链接地址 * 链接: http:/ ...

  10. linux namespace note

    --------------------------------- from http://oldwiki.linux-vserver.org/Namespaces //开源不只是代码,还有思想 Na ...