Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
宽度和高度必须为>;使用MPAndroidChart库时出现0错误_Android_Android Layout_Android Bitmap_Android Cardview_Mpandroidchart - Fatal编程技术网

宽度和高度必须为>;使用MPAndroidChart库时出现0错误

宽度和高度必须为>;使用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

我想在我的应用程序中使用MPAndroidChartLibrary,但我遇到了自己无法解决的问题。我想将图表放入存储在ListView中的CardView中。CardView的xml如下所示:

<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高度要复杂得多。