2017-02-13 9 views
0

Я хочу прокрутить ScrollView программно, но я не могу.Почему нельзя прокручивать ScrollView Programmatically?

Ни один из методов ScrollView "scrollTo, arrowScroll, pageScroll и fullScroll" не работает!

final ScrollView scrollView = (ScrollView) view.findViewById(R.id.scrollbar_textchat); 
Button sendButton = (Button) view.findViewById(R.id.btn_send); 
     sendButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       scrollView.fullScroll(View.FOCUS_DOWN); 
      } 
     }); 

XML макет:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 
     <!--main--> 
     <ScrollView 
      android:id="@+id/scrollbar_textchat" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:verticalScrollbarPosition="left" 
      android:fillViewport="true"> 
       <!--messages list--> 
       <ListView 
        android:id="@+id/list_textchat" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:listSelector="@android:color/transparent" 
        android:cacheColorHint="@android:color/transparent" /> 
     </ScrollView> 
     <!--/main--> 

     <!--line--> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_marginBottom="10dp" 
      android:layout_height="2dp" 
      android:background="#FFEEEEEE"/> 

     <!--already Typing message...--> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:orientation="horizontal"> 

      <com.salamatyar.components.TypingAnimationView 
       android:id="@+id/typing_textchat" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="5dp"/> 

      <TextView 
       android:id="@+id/text_typing_message" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="typing" /> 

     </LinearLayout> 
     <!--/already Typing message...--> 

     <!--line--> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_marginBottom="10dp" 
      android:layout_height="2dp" 
      android:background="#FFEEEEEE"/> 

     <!--type--> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

      <EditText 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"/> 

      <Button 
       android:id="@+id/btn_send" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="send"/> 

     </LinearLayout> 
     <!--/type--> 
    </LinearLayout> 

</LinearLayout> 

ответ

1

попробовать этот код:

final ScrollView scrollView = (ScrollView) view.findViewById(R.id.scrollbar_textchat); 
scrollView.post(new Runnable() { 
     public void run() { 
      scrollView.scrollTo(0, scrollView.getBottom()); 
     } 
}); 

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

listView.post(new Runnable(){ 
    public void run() { 
    listView.setSelection(listView.getCount() - 1); 
    }}); 
+0

не работает. ни один из методов прокрутки не работает! – Saeed

+0

Вы добавляете 'scrollview' в' Listview' Only. .. Попробуйте прокрутить список. Вместо этого сделайте следующее.: 0: – rafsanahmad007

+0

. Еще один запрос: работает ли ручная прокрутка ur в элементах списка? – rafsanahmad007

0

вы должны запустить код внутри scrollView.post так:

scrollView.post(new Runnable() {    
    @Override 
    public void run() { 
      scrollView.fullScroll(View.FOCUS_DOWN);    
    } 
}); 
+0

спасибо за ваш ответ, но я проверил это, прежде и не работал! – Saeed

+0

Это странно! это всегда работает для меня, в любом случае, вы пробовали 'scrollView.postDelayed' вместо' scrollView.post' –

+0

'scrollView.postDelayed' также не работает! – Saeed

1

XML макет:

удалить

<ScrollView 
     android:id="@+id/scrollbar_textchat" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:verticalScrollbarPosition="left" 
     android:fillViewport="true"> 
      ------------------------------- 
    </ScrollView> 

и использовать Android: layout_weight = "1"

 <ListView 
      android:id="@+id/list_textchat" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:listSelector="@android:color/transparent" 
      android:cacheColorHint="@android:color/transparent" /> 
Смежные вопросы