ScrollView 中的 XYPlot(AndroidPlot 库)没有出现
XYPlot (AndroidPlot library) in ScrollView does not appear
我正在尝试将 XYPlot
(来自 AndroidPlot 库 http://androidplot.com/)放入 ScrollView
容器中,因为这个 Activity 中会有更多的东西。不幸的是,我得到的只是空白 space,图表应该出现的地方(当我删除 ScrollView
它会正确显示)。
我的布局xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.androidplot.xy.XYPlot
android:id="@+id/mySimpleXYPlot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
androidPlot.title="A Simple XY Plot"
androidPlot.domainLabel="Domain"
androidPlot.rangeLabel="Range"
androidPlot.titleWidget.labelPaint.textSize="@dimen/title_font_size"
androidPlot.domainLabelWidget.labelPaint.textSize="@dimen/domain_label_font_size"
androidPlot.rangeLabelWidget.labelPaint.textSize="@dimen/range_label_font_size"
androidPlot.graphWidget.marginTop="20dp"
androidPlot.graphWidget.marginLeft="15dp"
androidPlot.graphWidget.marginBottom="30dp"
androidPlot.graphWidget.marginRight="10dp"
androidPlot.graphWidget.rangeLabelPaint.textSize="@dimen/range_tick_label_font_size"
androidPlot.graphWidget.rangeOriginLabelPaint.textSize="@dimen/range_tick_label_font_size"
androidPlot.graphWidget.domainLabelPaint.textSize="@dimen/domain_tick_label_font_size"
androidPlot.graphWidget.domainOriginLabelPaint.textSize="@dimen/domain_tick_label_font_size"
androidPlot.legendWidget.textPaint.textSize="@dimen/legend_text_font_size"
androidPlot.legendWidget.iconSizeMetrics.heightMetric.value="15dp"
androidPlot.legendWidget.iconSizeMetrics.widthMetric.value="15dp"
androidPlot.legendWidget.heightMetric.value="25dp"
androidPlot.legendWidget.positionMetrics.anchor="right_bottom"
androidPlot.graphWidget.gridLinePaint.color="#000000"/>
</LinearLayout>
</ScrollView>
我的onCreate()
方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
XYPlot plot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
Number[] series1Numbers = {1, 8, 5, 2, 7, 4};
XYSeries series1 = new SimpleXYSeries(
Arrays.asList(series1Numbers), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Series1");
LineAndPointFormatter series1Format = new LineAndPointFormatter();
series1Format.setPointLabelFormatter(new PointLabelFormatter());
series1Format.configure(getApplicationContext(),
R.xml.line_point_formatter_with_plf1);
plot.addSeries(series1, series1Format);
plot.setTicksPerRangeLabel(3);
plot.getGraphWidget().setDomainLabelOrientation(-45);
}
示例来自QuickStart Tutorial, slightly truncated. I have already checked this answer: Androidplot - X-Axis labels cut off
当我将布局更改为:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.androidplot.xy.XYPlot
android:id="@+id/mySimpleXYPlot"
android:layout_width="match_parent"
android:layout_height="match_parent" .../>
并添加几个 TextView
小部件,图表出现了,但我无法滚动查看它们。最后,当我添加更多 TextView
小部件(很多)时,图表不会再次出现,但我可以看到所有 TextView
小部件并滚动查看所有小部件。
有人能帮忙吗?
我遇到了类似的问题。痛苦的部分是意识到这个问题实际上结合了 2 个独立的问题。
1.) 布局定义
在定义 XYPlot 的布局时,而不是 android:layout_height="match_parent"
定义您需要的 dp 值(类似于 android:layout_height="200dp"
)
2.) 硬件加速
在检查 logcat 时,我注意到以下输出
W/View﹕ View too large to fit into drawing cache, needs 10368000 bytes, only 8294400 available
快速搜索让我找到 this Whosebug topic。所以基本上我将 android:hardwareAccelerated="false"
添加到 AndroidManifest.xml 文件中的 Activity。之后它起作用了,但是速度很慢。我最终将 androidplot.renderMode="use_background_thread"
添加到 XYPlot 布局定义中,这些更改对我有用。
希望这会有所帮助。
在您的 ScrollView 中,添加 android:fillViewport="true"
。
然后,在您的 XYPlot 中,添加以下属性:
android:minWidth
android:minHeight
我已将我的 minWidth 和 minHeight 设置为我在 XYPlot 中的原始宽度和高度。这应该够了吧。我还手动将 XYPlot 的高度设置为 250dp
。不确定是否有所作为。
我正在尝试将 XYPlot
(来自 AndroidPlot 库 http://androidplot.com/)放入 ScrollView
容器中,因为这个 Activity 中会有更多的东西。不幸的是,我得到的只是空白 space,图表应该出现的地方(当我删除 ScrollView
它会正确显示)。
我的布局xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.androidplot.xy.XYPlot
android:id="@+id/mySimpleXYPlot"
android:layout_width="match_parent"
android:layout_height="wrap_content"
androidPlot.title="A Simple XY Plot"
androidPlot.domainLabel="Domain"
androidPlot.rangeLabel="Range"
androidPlot.titleWidget.labelPaint.textSize="@dimen/title_font_size"
androidPlot.domainLabelWidget.labelPaint.textSize="@dimen/domain_label_font_size"
androidPlot.rangeLabelWidget.labelPaint.textSize="@dimen/range_label_font_size"
androidPlot.graphWidget.marginTop="20dp"
androidPlot.graphWidget.marginLeft="15dp"
androidPlot.graphWidget.marginBottom="30dp"
androidPlot.graphWidget.marginRight="10dp"
androidPlot.graphWidget.rangeLabelPaint.textSize="@dimen/range_tick_label_font_size"
androidPlot.graphWidget.rangeOriginLabelPaint.textSize="@dimen/range_tick_label_font_size"
androidPlot.graphWidget.domainLabelPaint.textSize="@dimen/domain_tick_label_font_size"
androidPlot.graphWidget.domainOriginLabelPaint.textSize="@dimen/domain_tick_label_font_size"
androidPlot.legendWidget.textPaint.textSize="@dimen/legend_text_font_size"
androidPlot.legendWidget.iconSizeMetrics.heightMetric.value="15dp"
androidPlot.legendWidget.iconSizeMetrics.widthMetric.value="15dp"
androidPlot.legendWidget.heightMetric.value="25dp"
androidPlot.legendWidget.positionMetrics.anchor="right_bottom"
androidPlot.graphWidget.gridLinePaint.color="#000000"/>
</LinearLayout>
</ScrollView>
我的onCreate()
方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
XYPlot plot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
Number[] series1Numbers = {1, 8, 5, 2, 7, 4};
XYSeries series1 = new SimpleXYSeries(
Arrays.asList(series1Numbers), SimpleXYSeries.ArrayFormat.Y_VALS_ONLY, "Series1");
LineAndPointFormatter series1Format = new LineAndPointFormatter();
series1Format.setPointLabelFormatter(new PointLabelFormatter());
series1Format.configure(getApplicationContext(),
R.xml.line_point_formatter_with_plf1);
plot.addSeries(series1, series1Format);
plot.setTicksPerRangeLabel(3);
plot.getGraphWidget().setDomainLabelOrientation(-45);
}
示例来自QuickStart Tutorial, slightly truncated. I have already checked this answer: Androidplot - X-Axis labels cut off
当我将布局更改为:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.androidplot.xy.XYPlot
android:id="@+id/mySimpleXYPlot"
android:layout_width="match_parent"
android:layout_height="match_parent" .../>
并添加几个 TextView
小部件,图表出现了,但我无法滚动查看它们。最后,当我添加更多 TextView
小部件(很多)时,图表不会再次出现,但我可以看到所有 TextView
小部件并滚动查看所有小部件。
有人能帮忙吗?
我遇到了类似的问题。痛苦的部分是意识到这个问题实际上结合了 2 个独立的问题。
1.) 布局定义
在定义 XYPlot 的布局时,而不是 android:layout_height="match_parent"
定义您需要的 dp 值(类似于 android:layout_height="200dp"
)
2.) 硬件加速 在检查 logcat 时,我注意到以下输出
W/View﹕ View too large to fit into drawing cache, needs 10368000 bytes, only 8294400 available
快速搜索让我找到 this Whosebug topic。所以基本上我将 android:hardwareAccelerated="false"
添加到 AndroidManifest.xml 文件中的 Activity。之后它起作用了,但是速度很慢。我最终将 androidplot.renderMode="use_background_thread"
添加到 XYPlot 布局定义中,这些更改对我有用。
希望这会有所帮助。
在您的 ScrollView 中,添加 android:fillViewport="true"
。
然后,在您的 XYPlot 中,添加以下属性:
android:minWidth
android:minHeight
我已将我的 minWidth 和 minHeight 设置为我在 XYPlot 中的原始宽度和高度。这应该够了吧。我还手动将 XYPlot 的高度设置为 250dp
。不确定是否有所作为。