宽度和高度必须为>;使用MPAndroidChart库时出现0错误
我想在我的应用程序中使用MPAndroidChartLibrary,但我遇到了自己无法解决的问题。我想将图表放入存储在ListView中的CardView中。CardView的xml如下所示:宽度和高度必须为>;使用MPAndroidChart库时出现0错误,android,android-layout,android-bitmap,android-cardview,mpandroidchart,Android,Android Layout,Android Bitmap,Android Cardview,Mpandroidchart,我想在我的应用程序中使用MPAndroidChartLibrary,但我遇到了自己无法解决的问题。我想将图表放入存储在ListView中的CardView中。CardView的xml如下所示: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_conten
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="2dp"
card_view:contentPadding="16dp"
card_view:cardUseCompatPadding="true"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textDateStartTitle"
android:paddingLeft="5dp"
android:textSize="26sp"
android:textColor="@color/accent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:gravity="left"/>
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pie_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
</FrameLayout>
打开包含这些CardView的片段时,我收到一个错误:
java.lang.IllegalArgumentException:宽度和高度必须大于0
位于android.graphics.Bitmap.createBitmap(Bitmap.java:808)
位于android.graphics.Bitmap.createBitmap(Bitmap.java:787)
位于android.graphics.Bitmap.createBitmap(Bitmap.java:754)
位于com.github.mikephil.charting.charts.Chart.onSizeChanged(Chart.java:2197)
当我在
com.github.mikephil.charting.charts.PieChart
中将android:layout\u width
和android:layout\u height
设置为一些固定值(例如200dp)时,图表看起来正常,没有错误。如何在宽度和高度取决于父级/内容的情况下消除此错误?现在,您的图表高度不取决于其父级的高度LinearLayout
:
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pie_chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
请尝试以下方法:
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pie_chart"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
第二组属性将允许您的
PieChart
填充容器内可用的所有垂直高度LinearLayout
(在考虑了上面TextView
的高度后)。我发现的唯一方法是点击一个按钮即可将文件保存附加到图库。在那之后,它工作得很好。我想一旦视图完全绘制完毕,系统的高度和宽度就正确了。不幸的是,这也不起作用。同样的错误。只有当我将layout\u heigt
和layout\u width
设置为某个固定值时,我才没有收到任何错误,因此我怀疑PieChart库在将match\u parent
值设置为真正的父值之前获取了该值。但是我不知道如何修复它。如果你使用我建议的代码,并且在dp中给外部框架布局一个固定的高度,会发生什么?哦,如果宽度是match\u parent
但高度是固定的dp值,你会得到同样的错误吗?或者两者都必须是dp值才能避免问题?在您提到的两种情况下,它都可以正常工作。这两种解决方案中的任何一种都可以接受吗?饼图无法使用任一维度中的wrap_content
,这是有道理的-它可能会缩放以匹配其大小,因此默认情况下没有“内置”高度。如果你想让它更有趣,你可以把它放在一个容器中,你可以通过覆盖onMeasure来确定它的纵横比,但这比指定一个固定的dp高度要复杂得多。