以编程方式向 FrameLayout 添加填充,而无需移动带有 ScrollView 内容的内部 Fragment

Add padding to FrameLayout programmatically without moving inner Fragment with ScrollView content

我需要在延迟一段时间后以编程方式向 FrameLayout 中的 Activity 添加底部填充或边距。问题是它是 FragmentsScrollView 的容器。当我将 bottom padding/margin 设置为它时,内部内容向上滚动。 Fragment 内容的顶部不再可见。

当我将底部填充设置为 ScrollView 内容时效果很好,但我想避免这种情况并在 Activity 中处理它而无需修改每个 Fragment.

我试过了:

每次都是同样的行为。有什么想法吗?

我自己想出来的。这似乎是 setVerticalFadingEdgeEnabled(true)setFadingEdgeLength()ScrollView 上一起使用时出现的问题。

这个 hack 解决了这个问题:

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    setVerticalFadingEdgeEnabled(false);
    super.onSizeChanged(w, h, oldw, oldh);
    setVerticalFadingEdgeEnabled(true);
}

如果您还有问题可以使用:

android:descendantFocusability="blocksDescendants"

在您的子 ScrollView 中。