【问题标题】:Scrollview inside of a scrollview滚动视图内的滚动视图
【发布时间】:2012-09-20 16:38:53
【问题描述】:

在你说之前 “Google 说不要这样做” 请阅读我的所有问题!!

布局:

ScrollView -> RelativeLayout -> ScrollView -> RelativeLayout

first ScrollView 是必要的,因为表单条目会拉起某些手机上的软键盘,从而隐藏其余内容。将 ScrollView 作为最外层的容器允许用户在存在软键盘的情况下进行滚动。

层次结构中的第二个 ScrollView 是一个仍然可以滚动的ListView。

我完全理解为什么不鼓励开发人员在另一个 ScrollView 中拥有一个 ScrollView。我需要想办法让两者一起工作。我尝试在最里面的 ScrollView 触摸时禁用最外面的 ScrollView,但这没有帮助。

有没有办法解决这个问题(当然不是同时)?在再次更改内容页面之前,我什至不介意禁用最外层的 ScrollView。一定有办法..

【问题讨论】:

  • "层次结构中的第二个 ScrollView 是一个仍然可以滚动的 ListView。" -- ScrollView != ListView。 “我需要想办法让两者协同工作”——或者,您可以将 ListView 替换为 Spinner
  • @CommonsWare Spinner 的想法会很好用,但不幸的是,该列表包含大约 20 篇带有标题、日期和预告片的文章,因此我需要一种方法来使用自定义布局显示所有内容: (

标签: android android-layout android-scrollview


【解决方案1】:

第 1 步:删除 ScrollView

第 2 步:通过 addHeaderView() 将第一个 RelativeLayout 设为 ListView 中的标题。

第 3 步:通过addFooterView() 将第二个RelativeLayout 设为ListView 的页脚。

最终效果是整个东西都是可滚动的,没有嵌套的可滚​​动项。

【讨论】:

  • +1 时髦的解决方案。我会看看我是否可以使用设计。
【解决方案2】:

仅当您将 android:layout_height 设置为第二个 ScrollView 的固定值时,它才会起作用。最好的方法是根据设备设置尺寸,因为最好为每个支持的屏幕尺寸创建布局(dp 上的值,如 150 dp)。 你应该创建单独的布局:layout-small、layout-normal、layout-large .... 请参阅此链接以优化固定大小:http://developer.android.com/guide/practices/screens_support.html

【讨论】:

    【解决方案3】:

    答案是以编程方式拦截触摸事件形成最外层的滚动视图。我正在使用我在另一个 SOF 中找到的关于 Disabling a ScrollView Programattically 的类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 2023-03-08
      • 2014-04-20
      相关资源
      最近更新 更多