Как прокрутить вниз в ScrollView при запуске активности



Я показываю некоторые данные в ScrollView. При запуске активности (метод onCreate) я заполняю ScrollView данными и хочу прокрутить вниз.



Я пытался использовать getScrollView().fullScroll(ScrollView.FOCUS_DOWN). Это работает, когда я делаю это как действие при нажатии кнопки, но оно не работает в методе onCreate.



есть ли способ, как прокрутить ScrollView в нижней части при запуске активности? Это означает, что представление уже прокручивается вниз при первом отображении.

522   9  

9 ответов:

Это должно быть сделано следующим образом:

    getScrollView().post(new Runnable() {

        @Override
        public void run() {
            getScrollView().fullScroll(ScrollView.FOCUS_DOWN);
        }
    });

таким образом, представление сначала обновляется, а затем прокручивается до "нового" дна.

после добавления данных введите следующий код:

final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
scrollview.post(new Runnable() {
    @Override
    public void run() {
        scrollview.fullScroll(ScrollView.FOCUS_DOWN);
    }
});

это работает для меня:

scrollview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        scrollview.post(new Runnable() {
            public void run() {
                scrollview.fullScroll(View.FOCUS_DOWN);
            }
        });
    }
});

вы можете сделать это в файл макета:

                android:id="@+id/listViewContent"
                android:layout_width="wrap_content"
                android:layout_height="381dp" 
                android:stackFromBottom="true"
                android:transcriptMode="alwaysScroll">

сразу после добавления данных в представление добавьте эту единственную строку:

yourScrollview.fullScroll(ScrollView.FOCUS_DOWN);

попробуй такое

    final ScrollView scrollview = ((ScrollView) findViewById(R.id.scrollview));
    scrollview.post(new Runnable() {
       @Override
       public void run() {
         scrollview.fullScroll(ScrollView.FOCUS_DOWN);
       }
    });
 scrollView.postDelayed(new Runnable() {
        @Override
        public void run() {
            scrollView.fullScroll(ScrollView.FOCUS_DOWN);
        }
    },1000);

после инициализации компонента пользовательского интерфейса и заполнить ее данными. добавьте эти строки в свой метод on create

Runnable runnable=new Runnable() {
        @Override
        public void run() {
            scrollView.fullScroll(ScrollView.FOCUS_DOWN);
        }
    };
    scrollView.post(runnable);

Это лучший способ сделать это.

scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            scrollView.post(new Runnable() {
                @Override
                public void run() {
                    scrollView.fullScroll(View.FOCUS_DOWN);
                }
            });
        }
});

Comments

    Ничего не найдено.