gpt4 book ai didi

android - 以编程方式将项目添加到 ScrollView 顶部,但不应滚动到顶部

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:52 26 4
gpt4 key购买 nike

我有带有子 LinearLayout 的 ScrollView 。我正在以编程方式向其中添加数据。当我将一些数据添加到线性布局的顶部时,它会自动滚动到顶部元素。但我想要类似的东西,用户到达顶部 -> 向上滚动以加载以前的数据 -> 将数据添加到线性布局顶部但不应该获得焦点,添加完成后,如果用户然后滚动然后它应该显示。

如何实现?

最佳答案

好吧,我想到了一个方法,而且效果几乎完美。

我在 ScrollView (svCommunications) 中有一个 LinearLayout (llCommunicationsLayout) 。

我膨胀了一个新的 LinearLayout,我要将 View 添加到这个新的 LinearLayout 的顶部,然后将这个新的布局添加到 ScrollView 内的 LinearLayout。

这是新布局:

final LinearLayout wrapperLayout = (LinearLayout) mInflater.inflate(R.layout.empty_layout, null);

我将我的 View 添加到此布局的第 0 个位置。

wrapperLayout.addView(view, 0);

将所有 View 添加到 wrapperLayout 后,我​​将 wrapperLayout 添加到 llCommunicationsLayout(我的 ScrollView 中的那个)

llCommunicationsLayout.addView(wrapperLayout, 0);

在此之后,我在 wrapperLayout 出现在屏幕上(具有可测量的高度)后计算它们的高度

wrapperLayout.post(new Runnable() {

@Override
public void run() {
int wrapperHeight = wrapperLayout.getHeight();

int svHeight = svCommunications.getHeight();

int scrollHeight = Math.abs(svHeight - wrapperHeight);

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int displayHeight = displaymetrics.heightPixels / 4;


svCommunications.scrollTo(0, (scrollHeight + displayHeight));

}
});

在这里,我得到了新添加的布局和 ScrollView 的高度。

我计算它们的差异,加上我设备屏幕高度的 1/4 并滚动它,瞧!

它并不完美,但在添加布局后,它不再滚动到屏幕顶部。尝试 displayHeight 以获得不同的结果。

希望这对某人有所帮助。

关于android - 以编程方式将项目添加到 ScrollView 顶部,但不应滚动到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053409/

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