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