【问题标题】:Android scroll to bottom after new fragment added添加新片段后Android滚动到底部
【发布时间】:2015-07-24 10:28:30
【问题描述】:

我有一个带有 LinearLayout 的应用程序,随着时间的推移,矩形片段从上到下在彼此下方添加。

在某些时候屏幕已满,新片段“隐藏”在屏幕视图之外。然后我想做的是每次添加新片段时让应用滚动到底部。

每次按下活动中的按钮或选中上述片段中的复选框时,都会添加一个片段。 所以我在 onClickListeners 和片段的 onCreateView 中尝试了以下操作:

        fm.beginTransaction().add(R.id.activity_uhf_layout, fragment).commit(); //Adding fragment



        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                scrollView.scrollTo(0, scrollView.getBottom());
            }});

这有时会起作用,添加片段并且屏幕向下滚动,但它就像 1/8 次。

我尝试过其他方法,例如:

        scrollView.post(new Runnable() {
        @Override
        public void run() {
            scrollView.scrollTo(0, scrollView.getBottom());
            }
        });

这基本上给出了相同的结果,我试过没有 Runnable 帖子,这根本不起作用。

我得到的结果是布局只向下滚动到已经存在的片段的底部,而不是一直向下滚动到片段管理器刚刚添加的新片段的末尾。

在我看来,即使添加了片段,LayoutManager 也没有真正“检测到”或类似的东西,但是如何绕过它,我不太确定。

【问题讨论】:

  • 你试过this 吗?您可能需要执行listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL)listView.setStackFromBottom(true); 之类的操作。
  • 我没有,但由于我没有将 Listview 用于我的片段,我真的认为它不会有帮助。但是,它可能只是从 LinearLayout 到使用 ListView 的唯一解决方案。
  • "得到了一个带有列表视图的应用程序" 啊,您似乎没有使用实际的 ListView。我会将片段放在 ListView 中,而不是使用 ScrollView。由于您使用的是 ScrollView,请尝试 this,在可运行文件中使用 scrollview.fullScroll(ScrollView.FOCUS_DOWN);
  • 哈。总滑倒。我在垂直方向使用 LinearLayout。

标签: android android-fragments android-scrollview


【解决方案1】:

您也可以尝试这样做。

fm.executePendingTransactions();
runOnUiThread(new Runnable() {
            @Override
            public void run() {
//Linearlayout is the layout the fragments are being added to.
View view = linearLayout.getChildAt(linearLayout.getChildCount()-1);
scrollView.scrollTo(0, view.getY() + view.getHeight());
}});

我不知道 executePendingTransactions() 是必要的,但如果已添加视图,那么它应该可以工作。

【讨论】:

    猜你喜欢
    • 2022-12-23
    • 1970-01-01
    • 2020-09-13
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2018-02-27
    相关资源
    最近更新 更多