1

运行到垂直滚动条“无法滚动”的问题与水平滚动的Android

  • 我试图得到一个定制的垂直滚动条与水平滚动的能力的工作。
  • 我想在水平滚动条中放置7个垂直滚动条(@ + id/verticalSeekbar,@ + id/verticalSeekbar_2等)。
  • 我(在stackoverflow的帮助下)能够得到我自定义的垂直滚动条。

但是,我无法水平滚动它。我想能够水平滚动,但它不起作用。附加是我想要它的形象。 这里是我的Activity_vertical_slider

<RelativeLayout 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" > 

    <com.example.verticalsliderandroid.HScroll android:id="@+id/hScroll" 
      android:layout_width="400dp" android:layout_height="wrap_content"> 

     <RelativeLayout 
      android:id="@+id/relative_layout_sample" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      > 

     <com.example.verticalsliderandroid.VerticalSeekBar 
     android:id="@+id/verticalSeekbar" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:max="255" 
     android:progress="10" 
     android:rotation="180" 
     android:progressDrawable="@android:color/transparent" 
     android:thumb="@drawable/eco_seekbar" /> 

     <com.example.verticalsliderandroid.VerticalSeekBar 
      android:id="@+id/verticalSeekbar_2" 
      android:layout_width="wrap_content" 
      android:layout_height="fill_parent" 
      android:layout_alignParentTop="true" 
      android:layout_toRightOf="@+id/verticalSeekbar" 
      android:max="255" 
      android:progress="10" 
      android:progressDrawable="@android:color/transparent" 
      android:rotation="180" 
      android:thumb="@drawable/eco_seekbar" />  

     </RelativeLayout> 

    </com.example.verticalsliderandroid.HScroll> 


</RelativeLayout> 

代码这里是我寻觅足以在互联网上我verticalseekbar.java

public class VerticalSeekBar extends SeekBar { 

    public VerticalSeekBar(Context context) { 
     super(context); 
    } 

    public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) { 

     super(context, attrs, defStyle); 
    } 

    public VerticalSeekBar(Context context, AttributeSet attrs) { 

     super(context, attrs); 
    } 


    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     super.onSizeChanged(h, w, oldh, oldw); 
    } 

    @Override 
    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(heightMeasureSpec, widthMeasureSpec); 
     setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); 

    } 

    protected void onDraw(Canvas c) { 
     c.rotate(-90); 
     c.translate(-getHeight(), 0); 
     super.onDraw(c); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (!isEnabled()) { 
      return false; 
     } 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 


      case MotionEvent.ACTION_MOVE: 


      case MotionEvent.ACTION_UP: 
       setProgress(getMax() - (int) (getMax() * event.getY()/getHeight())); 
       onSizeChanged(getWidth(), getHeight(), 0, 0); 
       break; 
      case MotionEvent.ACTION_CANCEL: 
       break; 
     } 
     return true; 
    } 

} 

。只是没有得到我需要的东西。请帮忙。

enter image description here

回答

1

我这样做的正确方法。该方法有一个ScrollView,其中一个Horizo​​ntalScrollView是一个TableLayout。你可以玩TableRow并得到你想要的任何东西。 以下是activity_main的代码。 VerticalSeekbar的代码保持不变。

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 


    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <HorizontalScrollView 
      android:layout_width="fill_parent"   
      android:layout_height="fill_parent" > 

     <TableLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"> 

        <TableRow 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent"> 

         <com.example.verticalslider.VerticalSeekBar 
          android:id="@+id/seekBar1" 
          android:layout_width="wrap_content" 
          android:layout_height="500dp" 
          android:padding="20dp" 
          /> 

          <com.example.verticalslider.VerticalSeekBar 
          android:id="@+id/seekBar2" 
          android:layout_width="wrap_content" 
          android:layout_height="500dp" 
          android:padding="20dp" 
          /> 

          <com.example.verticalslider.VerticalSeekBar 
          android:id="@+id/seekBar3" 
          android:layout_width="wrap_content" 
          android:layout_height="500dp" 
          android:padding="20dp"        
          /> 

          <com.example.verticalslider.VerticalSeekBar 
          android:id="@+id/seekBar4" 
          android:layout_width="wrap_content" 
          android:layout_height="500dp" 
          android:padding="20dp"        
          /> 

          <com.example.verticalslider.VerticalSeekBar 
          android:id="@+id/seekBar5" 
          android:layout_width="wrap_content" 
          android:layout_height="500dp" 
          android:padding="20dp"        
          /> 

          <com.example.verticalslider.VerticalSeekBar 
          android:id="@+id/seekBar6" 
          android:layout_width="wrap_content" 
          android:layout_height="500dp" 
          android:padding="20dp"        
          /> 

        </TableRow> 

       </TableLayout> 

     </HorizontalScrollView> 

    </ScrollView> 



</RelativeLayout> 

完美地工作。

1

case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP:不ü需要ACTION_DOWN和ACTION_MOVE后休息一下?如果你没有break,你所有的上移和下移动作都会变成UP,并且你将永远无法用一个UP运动来测试滚动条。

编辑:尝试SO question

+0

这是一个错误,但纠正这并没有帮助。看看图像。我有这样的7个垂直滚动条来查看所有我需要水平滚动的滚动条。我无法做到这一点。 – user1051505 2013-04-20 10:53:03