我想用XYPlot的ListView绘制单个图形。 为什么我不使用XYPlot? 这是因为我有几个图表,我想让用户在某个时间只选择一个图表。也就是说,一旦用户选择了一个项目,我就会根据所选项目绘制图形。此外,还存在每个项目的比例不同的问题。也就是说,如果item1从Y轴缩放到0到10,则item2可能会从-20缩放到20.因此,使用比例在同一图表上绘制将是非常糟糕的用户体验。
这就是为什么我想到了XYPlot的ListView。
但是当我放置一个XYPlot时,它变得可滚动。我尝试在XYPlot的xml代码的layout_height上使用了wrap_content或match_parent,但是当我这样做时,图表确实出现了。
这是我的ListView的代码
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="0dp"
android:layout_margin="0dp">
<ListView
android:id="@+id/listView1"
style="@style/APDefacto.Light"
android:padding="0dp"
android:layout_margin="0dp"
android:stateListAnimator="@null"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
我用来与listView
关联的XYPlot的xml代码<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ap="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.androidplot.xy.XYPlot
style="@style/APDefacto.Light"
android:id="@+id/xyplot"
android:layout_width="wrap_content"
android:layout_height="450dp"/>
</LinearLayout>
上面的代码可以工作但是可以滚动图表。将XYPlot的代码更改为
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ap="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.androidplot.xy.XYPlot
style="@style/APDefacto.Light"
android:id="@+id/xyplot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
或甚至使用 match_parent 作为 layout_height ,使XYPlot从listView中消失。
我想知道如何让XYPlot图形水平居中(我希望避免用户在看到整个图形之前向下滚动的痛苦)
有任何线索吗? 感谢。
答案 0 :(得分:1)
我的第一个建议是不使用ListView
。我不是肯定的我完全理解你的用例,但它听起来并不像你需要ListView
。
话虽如此,如果你想继续使用ListView
,在可滚动视图中使用XYPlot
(或任何其他Plot
类型)时要记住几件事ListView
:
XYPlot
没有隐式尺寸,因此您无法使用layout_width
的{{1}}或layout_height
值。
此外,wrap_content
应指定为dp,因为layout_height
通常会导致鸡蛋和鸡蛋类型的情景,通常会将其自身显示为您观察到的无形情节。您仍然可以安全地使用match_parent
作为地图的match_parent
。