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);
谁能告诉我,我做错了什么?有什么我需要改变的吗?非常感谢您!
尝试在 HorizontalScrollView 和 ScrollView 之间添加另一个布局。
Offtop:
- 并使用 match_parent 代替 fill_parent
- 无论如何都要为所有 ScrollView 添加 "android:fillViewport=true"
你忘了
android:fillViewport="true" for your scroll view
旁注
有两个嵌套的滚动视图容器不是一个好主意。并且可能是 scroll/resizing 问题的原因。
我不确定滚动视图变成水平滚动视图的目的是什么,但是如果你想实现水平和垂直滚动视图,最好使用GridView
或RecyclerView
。
今天早上我再次尝试将 android:fillViewport="true"
添加到 ScrollView。它仍然没有用,但是由于两个答案都建议我添加它,我尝试将它添加到 HorizontalScrollView 并且我的应用程序最终获得了我期望的功能。
简而言之,答案是将 android:fillViewport="true"
添加到 HorizontalScrollView。
PS:当我也将 android:fillViewport="true"
添加到 ScrollView 时,TableLayout 会在我的 ScrollView 中间居中。 (这对我的应用程序来说不是必需的,但有一天它可以帮助其他人。)
感谢这两个让我朝着正确方向前进的答案!
我的应用运行良好,只有一个问题:当屏幕水平放置时,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);
谁能告诉我,我做错了什么?有什么我需要改变的吗?非常感谢您!
尝试在 HorizontalScrollView 和 ScrollView 之间添加另一个布局。
Offtop:
- 并使用 match_parent 代替 fill_parent
- 无论如何都要为所有 ScrollView 添加 "android:fillViewport=true"
你忘了
android:fillViewport="true" for your scroll view
旁注
有两个嵌套的滚动视图容器不是一个好主意。并且可能是 scroll/resizing 问题的原因。
我不确定滚动视图变成水平滚动视图的目的是什么,但是如果你想实现水平和垂直滚动视图,最好使用GridView
或RecyclerView
。
今天早上我再次尝试将 android:fillViewport="true"
添加到 ScrollView。它仍然没有用,但是由于两个答案都建议我添加它,我尝试将它添加到 HorizontalScrollView 并且我的应用程序最终获得了我期望的功能。
简而言之,答案是将 android:fillViewport="true"
添加到 HorizontalScrollView。
PS:当我也将 android:fillViewport="true"
添加到 ScrollView 时,TableLayout 会在我的 ScrollView 中间居中。 (这对我的应用程序来说不是必需的,但有一天它可以帮助其他人。)
感谢这两个让我朝着正确方向前进的答案!