代码之家  ›  专栏  ›  技术社区  ›  anon

滚动视图滚动到底部

  •  14
  • anon  · 技术社区  · 14 年前

    我在布局中定义了一个带有texteedit的滚动视图:

     <ScrollView android:fillViewport="true"
         android:layout_marginBottom="50dip"
         android:id="@+id/start_scroller"
         android:layout_height="fill_parent"
         android:layout_width="fill_parent"
         android:fadingEdge="none">
     <TextView  
        android:id="@+id/text"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >
     </TextView>
     </ScrollView>
    

    我使用以下方法将文本添加到此滚动视图:

    public void writeToLogView(String textMsg) {
       if (text.getText().equals("")) {
           text.append(textMsg);
       } else {
        text.append("\n" + textMsg);
        scroller.scrollBy(0, 1000000);
       }
    }
    

    如您所见,我附加了文本并尝试滚动到滚动视图的底部。不幸的是,这并不能正常工作。它向下滚动,但不总是,也不总是向下滚动。有什么暗示吗?

    3 回复  |  直到 10 年前
        1
  •  30
  •   MatejC    14 年前

    或在ScrollView中更改视图大小后使用:

    scroller.post(new Runnable() { 
        public void run() { 
            scroller.fullScroll(ScrollView.FOCUS_DOWN); 
        } 
    }); 
    
        2
  •  7
  •   Klarth    14 年前

    在附加文本后,尝试使用 文本框 要计算滚动到何处而不是某个常量,请执行以下操作:

    scroller.post(new Runnable() {
    
        public void run() {
            scroller.scrollTo(text.getMeasuredWidth(), text.getMeasuredHeight());
        }
    });
    
        3
  •  0
  •   XåpplI'-I0llwlg'I -    10 年前

    对于那些使用 Android Annotations ,您可以这样做:

    @ViewById
    ScrollView myScrollView;
    
    @AfterViews
    protected void init() {
        scrollToEnd();
    }
    
    @UiThread(delay=200)
    void scrollToEnd() {
        myScrollView.fullScroll(ScrollView.FOCUS_DOWN);
    }