Android ScrollView 旋转后没有填满屏幕的整个宽度

Android ScrollView not filling full width of screen after rotating

我的应用运行良好,只有一个问题:当屏幕水平放置时,ScrollView 不会填充父级。 xml的部分是:

<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>

我已经试过设置

android:fillViewport=true

以及像这样在 onCreate 方法中重置布局参数:

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

谁能告诉我,我做错了什么?有什么我需要改变的吗?非常感谢您!

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

Offtop:

  1. 并使用 match_parent 代替 fill_parent
  2. 无论如何都要为所有 ScrollView 添加 "android:fillViewport=true"

你忘了

android:fillViewport="true" for your scroll view

旁注

有两个嵌套的滚动视图容器不是一个好主意。并且可能是 scroll/resizing 问题的原因。

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

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

简而言之,答案是将 android:fillViewport="true" 添加到 Horizo​​ntalScrollView。

PS:当我也将 android:fillViewport="true" 添加到 ScrollView 时,TableLayout 会在我的 ScrollView 中间居中。 (这对我的应用程序来说不是必需的,但有一天它可以帮助其他人。)

感谢这两个让我朝着正确方向前进的答案!