zoukankan      html  css  js  c++  java
  • 让两个HorizontalScrollView联动

    有这样一个需求,需要当其中一个HorizontalScrollView滚动的时候另一个HorizontalScrollView也跟着滚动,所以才有了这个类: 

    Java代码  收藏代码
    1. package com.ql.view;  
    2.   
    3. import android.content.Context;  
    4. import android.util.AttributeSet;  
    5. import android.view.View;  
    6. import android.widget.HorizontalScrollView;  
    7.   
    8. public class SyncHorizontalScrollView extends HorizontalScrollView{  
    9.     private View mView;  
    10.     public SyncHorizontalScrollView(Context context) {  
    11.         super(context);  
    12.         // TODO Auto-generated constructor stub  
    13.     }  
    14.     public SyncHorizontalScrollView(Context context, AttributeSet attrs) {  
    15.         super(context, attrs);  
    16.         // TODO Auto-generated constructor stub  
    17.     }  
    18.   
    19.     protected void onScrollChanged(int l, int t, int oldl, int oldt) {    
    20.         super.onScrollChanged(l, t, oldl, oldt);    
    21.         if(mView!=null){  
    22.             mView.scrollTo(l, t);  
    23.         }    
    24.     }  
    25.       
    26.     public void setScrollView(View view){  
    27.         mView = view;    
    28.     }  
    29.   
    30. }  


    用法: 
    scrollView0=(SyncHorizontalScrollView)findViewById(R.id.scrollView0); 
    scrollView1=(SyncHorizontalScrollView)findViewById(R.id.scrollView1); 
    scrollView0.setScrollView(scrollView1); 
    scrollView1.setScrollView(scrollView0); 

    这样其中一个滚动时另一个也跟着滚动了。 
    水平滚动解决了,那竖直滚动的ScrollView也类似的写法。 

    还有一个问题: 
    如何让HorizontalScrollView总是停留在几个固定的位置? 
    比如HorizontalScrollView滚动到112位置的时候,需要判断它离100近还是200近,如果离100近就接着滚动到100的位置,否则滚动到200的位置。如何解决? 


    HorizontalScrollView可以解决Tab过多的问题 
    网上大多都是用Gallery来模拟TabHost 但是自己实在是懒 就没这么做 一种可以凑合着用的简单做法,只需要吧layout改一下即可: 

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <TabHost xmlns:android="http://schemas.android.com/apk/res/android"  
    3.         android:id="@android:id/tabhost"   
    4.         android:layout_width="fill_parent"  
    5.         android:layout_height="fill_parent"  
    6.         android:background="#001629">  
    7.         <HorizontalScrollView    
    8.         android:layout_width="fill_parent"   
    9.         android:layout_height="wrap_content">   
    10.          <TabWidget android:id="@android:id/tabs"  
    11.             android:layout_width="fill_parent"  
    12.             android:layout_height="wrap_content"/>  
    13.            </HorizontalScrollView>  
    14.              <FrameLayout android:id="@android:id/tabcontent"  
    15.             android:layout_width="fill_parent"  
    16.             android:layout_height="wrap_content"  
    17.             android:paddingTop="95px">  
    18.    
    19.         </FrameLayout>  
    20. </TabHost>  
    21. 在TabWidget外面加上HorizontalScrollView即可。  
    22. 不过 这样有个问题 宽度貌似改不了了 即使你只有一个tab 它并不会fill_parent 还是原来的宽度。(试试设置HorizontalScrollView的android:fillViewport="true")  
    23. 但是 如果很多tab的话 还是好使的。  




    扩展HorizontalScrollView实现整个屏幕滚动 
    http://www.eoeandroid.com/forum.php?mod=viewthread&tid=148434&fromuid=30206

  • 相关阅读:
    bzoj2733 永无乡 平衡树按秩合并
    bzoj2752 高速公路 线段树
    bzoj1052 覆盖问题 二分答案 dfs
    bzoj1584 打扫卫生 dp
    bzoj1854 游戏 二分图
    bzoj3316 JC loves Mkk 二分答案 单调队列
    bzoj3643 Phi的反函数 数学 搜索
    有一种恐怖,叫大爆搜
    BZOJ3566 概率充电器 概率dp
    一些奇奇怪怪的过题思路
  • 原文地址:https://www.cnblogs.com/firecode/p/2674534.html
Copyright © 2011-2022 走看看