【问题标题】:How can I create a View, which allows larger children?如何创建允许更大孩子的视图?
【发布时间】:2014-07-04 12:27:01
【问题描述】:

我需要实现一个包含RelativeLayout 的视图。

  • 父项的宽度和高度应该是绝对值。
  • 孩子的宽度和高度要么设置为 WRAP_CONTENT 或一个绝对值,但从不设置为 MATCH_PARENT。
  • 孩子可能比父母大。如果是这种情况,则只有适合父 View 的 RelativeLayout 部分应该是可见的,如下图所示。


此外,RelativeLayout 应该能够移动,因此可以更改父视图中的可见部分。不幸的是,Android 不允许我这样做。孩子总是被剪下来以适合父母。
我偶然发现了 ScrollView 和 Horizo​​ntalScrollView allready,但它们允许用户滚动,这不是我希望他能够做到的。只是这个太大的 RelativeLayout,我想向用户展示它的一部分。

所有内容都以编程方式添加到屏幕上,无需 XML。

有可能吗?也许我还没有看到 ScrollView 的一些明显可能性?

【问题讨论】:

    标签: android layout


    【解决方案1】:

    正如您所建议的,您可以使用 ScrollView 并在此视图中禁用滚动。

    为此,请阅读此答案:

    Disable ScrollView Programmatically?

    ;)

    【讨论】:

    • 哦...也许我会再试一次 ScrollView。谢谢!
    • 但是由于我需要二维滚动,我不得不将 Horizo​​ntalScrollView 嵌套到 ScrollView 中。我必须在哪里调用 scrollTo() ?一个还是两个?
    • 同上。我偶然发现了 ScrollView 和 Horizo​​ntalScrollView allready,但它们允许用户滚动,这不是我希望他能够做到的。大声笑......你需要滚动还是不需要????
    • 我需要滚动,因为子视图的所需部分不一定是左上角。无法滚动的是用户。
    • 您必须覆盖 onGestureDetector 并找出用户滚动视图的方式。如果用户在水平方向滚动,那么您的 Horizo​​ntalScrollView 将捕获滑动,否则如果他在垂直方向滚动,则手势将由您的滚动视图管理。这个答案是一个很好的起点stackoverflow.com/questions/19411518/…
    【解决方案2】:

    【讨论】:

    • 我已经尝试过了,但没有成功。在我以编程方式添加我的东西时,我使用了父视图的 setClipChildren(false)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    相关资源
    最近更新 更多