MPandroidchart饼图数据不显示,但会显示标签

MPandroidchart饼图数据不显示,但会显示标签,android,kotlin,mpandroidchart,Android,Kotlin,Mpandroidchart,我正在尝试使用MPAndroidChart实现一个简单的饼图,我想要一个可能的最简单示例,我想要将其显示为一个片段,问题是图表没有重新绘制,但标签以一种奇怪的方式显示,正如我们在下一个屏幕截图中所看到的: 代码如下: class StatsFragment : Fragment() { lateinit var debtsChart : PieChart override fun onCreateView(inflater: LayoutInflater, containe

我正在尝试使用MPAndroidChart实现一个简单的饼图,我想要一个可能的最简单示例,我想要将其显示为一个片段,问题是图表没有重新绘制,但标签以一种奇怪的方式显示,正如我们在下一个屏幕截图中所看到的:

代码如下:

class StatsFragment : Fragment() {

    lateinit var debtsChart : PieChart

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val v = inflater.inflate(R.layout.fragment_stats, container, false)

        debtsChart = v.findViewById(R.id.debtsPieChart)

        setupPieChart()

        return v;
    }

    private fun setupPieChart() {
        // Populating a list of PieEntries
        val rainFall : FloatArray = floatArrayOf(98.5f,128.8f,161.6f)
        val monthNames : Array<String> = arrayOf("Jan", "Fab", "Mar")

        val pieEntries = ArrayList<PieEntry>()
        for(a in 1..2){
            pieEntries.add(PieEntry(rainFall[a],monthNames[a]))
        }

        val dataSet = PieDataSet(pieEntries,"Hello world")
        val data = PieData(dataSet)

        debtsChart.data = data
        debtsChart.invalidate()

    }
类StatsFragment:Fragment(){
lateinit var debtsChart:PieChart
覆盖创建视图(充气机:布局充气机,容器:ViewGroup?,savedInstanceState:Bundle?):视图{
val v=充气机。充气(R.layout.fragment_统计,容器,错误)
debtsChart=v.findViewById(R.id.debtsPieChart)
图表()
返回v;
}
私人娱乐图表(){
//填充项目列表
val降雨量:FloatArray=floatArrayOf(98.5f、128.8f、161.6f)
val monthNames:Array=arrayOf(“一月”、“工厂”、“三月”)
val pieEntries=ArrayList()
对于(1..2中的a){
添加(输入(降雨量[a],月降雨量[a]))
}
val dataSet=PieDataSet(pieEntries,“Hello world”)
val数据=PieData(数据集)
debtshart.data=数据
debtsChart.invalidate()
}
这是片段的xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorActivityBackground">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:text="@string/detalles_de_deuda_global"
            android:textColor="@android:color/black"
            android:textSize="@dimen/title"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <com.github.mikephil.charting.charts.PieChart
            android:id="@+id/debtsPieChart"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginTop="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

只需添加
fillViewPort=“true”
使用ScrollView使ConstraintLayout占据屏幕上的所有位置。因为在制作方式上,PieChart取决于ConstraintLayout的大小,反之亦然。要使一切正常工作,必须为图表指定一定的高度,或者必须允许ScrollView占据屏幕上的所有位置

PS:我不建议在实际创建之前对片段中的布局进行处理。您可以在调用
onViewCreated()
后执行相同的操作