2017-01-17 7 views
0

У меня есть горизонтальный вид прокрутки с несколькими текстовыми видами. Существует указатель на верхнем макете, а разные текстовые представления при попадании под указатель запускают их соответствующие фрагменты. Сейчас он свободно прокручивается, и вы можете остановить его между двумя текстовыми представлениями. Я хочу, чтобы прокручивать определенную сумму каждый раз, когда я прокручиваю влево или вправо, что приведет к тому, что текст будет находиться в центре указателя выше.Прокрутка определенной суммы при одиночном прокрутке в горизонтальном прокрутке

Я положил их в относительном расположении и здесь является XML для этого

<LinearLayout 
    android:id="@+id/ic_layout" 
    android:layout_width="match_parent" 
    android:orientation="horizontal" 
    android:layout_height="20dp"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     android:src="@drawable/arrow"/> 

</LinearLayout> 

<HorizontalScrollView 
    android:id="@+id/HorizontalScrollView1" 
    android:layout_width="300dp" 
    android:layout_height="75dp" 
    android:background="#FFF" 
    android:scrollbars="none" 
    android:fillViewport="false" 
    android:layout_below="@+id/ic_layout" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginLeft="100dp" 
    android:layout_marginRight="100dp"> 

    <LinearLayout 
     android:id="@+id/imgLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="100dp" 
     android:orientation="horizontal" 
     android:gravity="center"> 

     <TextView 
      android:layout_width="130dp" 
      android:layout_height="40dp" 
      android:paddingLeft="120dp" 
      android:paddingRight="10dp" /> 

     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap1" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 
     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap2" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 
     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap3" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 

     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap4" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 

     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap5" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 

     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap6" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 

     <TextView 
      android:layout_width="100dp" 
      android:layout_height="40dp" 
      android:text="Random Crap7" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp"/> 

     <TextView 
      android:layout_width="70dp" 
      android:layout_height="40dp" 
      android:paddingLeft="10dp" 
      android:paddingRight="70dp"/> 


    </LinearLayout> 


</HorizontalScrollView> 

ответ

0

Следовать:

Для прокрутки по горизонтали Scrollview для конкретного использования суммы ниже кода:

final HorizontalScrollView YourHorizontalScrollView = (HorizontalScrollView) findViewById(R.id.YourHorizontalScrollView); 

YourHorizontalScrollView.post(new Runnable() { 

    @Override 
    public void run() { 
     final TextView YourTextView = (TextView) findViewById(R.id.yourTextView); 
     int scrollTo = 0; 
     final int count = ((LinearLayout) YourHorizontalScrollView.getChildAt(0)) 
       .getChildCount(); 
     for (int i = 0; i < count; i++) { 
      final View child = ((LinearLayout) YourHorizontalScrollView.getChildAt(0)) 
        .getChildAt(i);     
      if (child != yourTextView) { 
       scrollTo += child.getWidth(); 
      } else { 
       break; 
      } 
     } 
     YourHorizontalScrollView.scrollTo(scrollTo, 0); 
    } 

}); 

Надеется, что это помогает вам.

0

Вы должны использовать ViewPager вместо горизонтального прокрутки, который работает для меня при фиксированном прокрутке каждый раз. исправьте высоту ViewPager для лучшего опыта. использовать пользовательский адаптер для ViewPager

public class CustomViewPagerImageAdapterPC extends PagerAdapter { 

@Override 
public float getPageWidth(int position) { 
    // TODO Auto-generated method stub 
    //return super.getPageWidth(position); 
    return 0.4f; 
}