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

时间:2016-08-10 09:07:23

标签: android scrollview

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

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

我试过了:

  • 将底部边距/填充设置为FrameLayout
  • View放在FrameLayout的{​​{1}}底部,
  • LinearLayout设为android:clipToPadding="false"

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

2 个答案:

答案 0 :(得分:2)

我自己弄清楚了。当setVerticalFadingEdgeEnabled(true)setFadingEdgeLength()上的ScrollView一起使用时,似乎会出现此问题。

这个黑客解决了这个问题:

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

答案 1 :(得分:1)

如果您仍有问题,可以使用:

android:descendantFocusability="blocksDescendants"

在您的孩子ScrollView中。