我一直在努力解决这个问题。基本上,我创建了一个类,它返回一个适当风格化的GraphicalView图表;我有一个用于条形图的类和另一个用于饼图的类(我使用了renderer.setInScroll(true)BTW)。我使用一些图表和一些TextView填充我的Activity,但是我添加的视图(任何视图)越多,它们就会被推离屏幕顶部,并且滚动视图的底部有一个很大的空白区域。
我的XML:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scrollingProfilePaid"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/paidLayoutLinearParent"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="00dp"
android:orientation="vertical">
<TextView
android:id="@+id/totalScore"
android:layout_width="wrap_content"
android:layout_height="350dp"
android:layout_gravity="center"
style="@style/GameTextWhite"
/>
<LinearLayout
android:id="@+id/pastScoresChart"
android:layout_width="fill_parent"
android:layout_height="350dp"
android:orientation="vertical"/>
<TextView
android:id="@+id/totalTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/GameTextWhite"
/>
<TextView
android:id="@+id/totalAverageResponseTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
style="@style/GameTextWhite"
/>
<LinearLayout
android:id="@+id/pastTimesChart"
android:layout_width="fill_parent"
android:layout_height="350dp"
android:orientation="vertical"/>
<!--...........-->
</LinearLayout>
</ScrollView>
我尝试了什么:
1.ScrollView-&GT;机器人:fillViewport = “真”
2.我没有为图表指定高度,而是使用pastScoresChart.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,(int)(dens * 350)))在java类中设置它;
3.将ScrollView包装在一个,使用子相对布局与android:alignParentTop =“true”作为标题,另一个孩子相对布局与android:alignParentBottom =“true”作为页脚,并将ScrollView更改为android :alignBelow = “@ ID /报头”。这只是使Scrollview大约40px高,似乎使问题变得更糟。
4.其他一些我不记得的东西。
我发现在ScrollView中设置android:marginTop =“500dp”(或类似的大值)的解决方法会将视图推回到各自的大致位置。不幸的是,很难让它完全适应,它让我担心设备的兼容性。有什么建议?
答案 0 :(得分:2)
ScrollView
底部的空白区域必须是因为它的子级(LinearLayout
)属性android:layout_gravity="center"
。尝试使用这样:
<LinearLayout
android:id="@+id/paidLayoutLinearParent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
OBS 1 :android:layout_marginTop="00dp"
属性是不必要的。
OBS 2 :从API级别8开始不推荐使用fill_parent
,并由match_parent
替换。所以,使用match_parent
。
更多信息:http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
OBS 3 :这是关于调试布局的提示:更改视图的背景颜色以查看每个视图的边界。