gpt4 book ai didi

android - 以编程方式滚动到屏幕末尾

转载 作者:太空狗 更新时间:2023-10-29 15:29:19 25 4
gpt4 key购买 nike

我已经实现了 TapTargetView库到我的应用程序。

通过某个元素后,我需要关注此时屏幕外的下一个 View :

@Override
public void onSequenceStep(TapTarget lastTarget) {
if (lastTarget.id() == 7) {
flavorContainer.setFocusableInTouchMode(true);
flavorContainer.requestFocus();
}
}

在我将广告单元添加到屏幕底部之前,一切都很好。所以现在必要的元素显示在广告后面。

enter image description here

方法 requestFocus() 仅将布局滚动到必要的 View 可见,但不会滚动到屏幕末尾。

enter image description here

我需要一种将屏幕内容滚动到VERY END 的方法,而不仅仅是必要的 View 在屏幕上可见。可能吗?

enter image description here

布局结构

<android.support.design.widget.CoordinatorLayout>
<LinearLayout>
<android.support.v4.widget.NestedScrollView>
<LinearLayout>
<android.support.v7.widget.CardView>
<LinearLayout>

</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>

最佳答案

您有两种可能的解决方案,各有利弊。

首先

NestedScrollView 上使用方法 fullScroll(int)NestedScrollView 必须在使用此方法之前绘制,并且焦点将丢失在之前获得它的 View 上。

nestedScrollView.post(new Runnable() {
@Override
public void run() {
nestedScrollView.fullScroll(View.FOCUS_DOWN);
}
});

第二

使用方法scrollBy(int,int)/smoothScrollBy(int,int)。它需要更多的代码,但您不会失去当前的焦点:

nestedScrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final int scrollViewHeight = nestedScrollView.getHeight();
if (scrollViewHeight > 0) {
nestedScrollView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

final View lastView = nestedScrollView.getChildAt(nestedScrollView.getChildCount() - 1);
final int lastViewBottom = lastView.getBottom() + nestedScrollView.getPaddingBottom();
final int deltaScrollY = lastViewBottom - scrollViewHeight - nestedScrollView.getScrollY();
/* If you want to see the scroll animation, call this. */
nestedScrollView.smoothScrollBy(0, deltaScrollY);
/* If you don't want, call this. */
nestedScrollView.scrollBy(0, deltaScrollY);
}
}
});

关于android - 以编程方式滚动到屏幕末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42875861/

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