gpt4 book ai didi

添加新 fragment 后Android滚动到底部

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:43:32 24 4
gpt4 key购买 nike

我有一个带有 LinearLayout 的应用程序,随着时间的推移从上到下逐个添加矩形 fragment 。

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

每次按下 Activity 中的按钮或选中上述 fragment 中的复选框时,都会添加一个 fragment 。所以我在 onClickListeners 和 fragment 的 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());
}});

这有时有效, fragment 被添加并且屏幕向下滚动,但大约 1/8 倍。

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

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

这基本上给出了相同的结果,我已经尝试过不使用 Runnable post,但它根本不起作用。

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

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

最佳答案

您也可以尝试这样做。

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() 是必需的,但如果已添加 View ,则应该可以。

关于添加新 fragment 后Android滚动到底部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30209667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com