Android ScrollView旋转后无法填满整个屏幕宽度

问题描述:

我的应用工作正常,只有一个问题:当屏幕水平放置时,ScrollView不会填充父级。 的XML的部分是:Android ScrollView旋转后无法填满整个屏幕宽度

<HorizontalScrollView 
    android:id="@+id/hsvShowDay" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ff00ff00" 
    android:padding="5dp" > 

    <ScrollView 
     android:id="@+id/svShowDay" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="#ffff0000" 
     android:padding="5dp" > 

     <TableLayout 
      android:id="@+id/tlShowDay" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:isScrollContainer="true" > 

      <TableRow 
       android:id="@+id/trEmptyRow" >      
      </TableRow> 

     </TableLayout> 

    </ScrollView> 

</HorizontalScrollView> 

我已经尝试在onCreate方法设置

android:fillViewport=true 

以及重新布局参数,像这样:

ScrollView svCalendar = (ScrollView)findViewById(R.id.svShowDay); 
ScrollView.LayoutParams params = new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT,ScrollView.LayoutParams.MATCH_PARENT); 
svCalendar.setLayoutParams(params); 

任何人都可以告诉我,我做错了什么?有什么我需要改变?非常感谢您提前!

今天早上我试着再次加入android:fillViewport="true"到ScrollView。它仍然没有工作,但作为两个答案都建议我添加它,我试着将它添加到Horizo​​ntalScrollView,并且我的应用程序终于获得了我期望的功能。

所以总之,答案是将android:fillViewport="true"添加到Horizo​​ntalScrollView。

PS:当我还将android:fillViewport="true"添加到ScrollView时,TableLayout将居中在我的ScrollView中间。 (这是我的应用程序不需要的,但它可以帮助别人有一天。)

感谢您的两个答案,我推动了正确的方向!

+0

我一直在尝试在过去2天内完成此操作,但不知何故,它曾用于平板电脑和手机,当我使用Horizo​​ntalScrollView时,第一个元素用于在手机上裁剪,但在平板电脑上正常工作, android:fillViewport =“true”解决了我的问题,非常感谢。 – API

尝试在Horizo​​ntalScrollView和ScrollView之间添加另一个布局。

Offtop:

  1. 并使用match_parent代替FILL_PARENT
  2. 添加 “机器人:fillViewport =真正的” 所有滚动型的反正
+0

非常感谢您的意见。不幸的是,增加另一个布局并没有解决我的问题。出于兼容性原因,我使用fill_parent。 (表格布局中的“match_parent”是由于测试,如果改变它会导致不同的结果。)'android:fillViewport'终于解决了我的问题,但我不得不将它添加到Horizo​​ntalScrollView。 – guicor

+0

不错!对于未来:无论如何,为所有滚动视图添加“fillViewport = true”) – Tronum

+0

嗯,我通常会同意,但在我的情况下,添加fillViewport =“true”到ScrollView实际上弄乱了设计。但是我肯定会每次都添加它,因为我不能按照我预期的那样填满整个屏幕! – guicor

你忘

机器人:fillViewport =您的滚动视图为“true”

旁注

有两个嵌套的滚动视图容器是一个坏主意。可能是滚动/调整大小问题的原因。

我不确定将视图滚动到水平滚动视图的目的是什么,但是如果要实现水平和垂直滚动视图,最好使用GridViewRecyclerView

+0

非常感谢您的意见。我确实缺少android:fillViewport =“true”',但我必须将其添加到Horizo​​ntalScrollView。你能否详细说明为什么两个嵌套的滚动视图容器是一个坏主意?这种嵌套是我找到的唯一解决方案,它允许我向下滚动或向侧面滚动,而不会同时进行两次。那么GridView或RecyclerView如何用于实现双向滚动? (当我搜索它时,我只发现了一些使用类似技巧的命题。)预先感谢帮助我更好地理解Android。 – guicor