我正在使用MPAndroid图表库在我的应用程序中显示饼图图例/图表描述标签没有相互 Package 我使用pieChart.legend.isWordWrapEnabled=true
,但它不起作用
这是我的xml
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".equity.EquityFragment">
<include
android:id="@+id/pageTitleLayout"
layout="@layout/page_title" />
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/pieChart"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pageTitleLayout" />
<include
android:id="@+id/loader"
layout="@layout/view_progress_loader"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
</androidx.constraintlayout.widget.ConstraintLayout>
这是代码
private fun createChart(chartData:List<EquityPieChart>){
val pieEntry= chartData.map { PieEntry(it.equity,it.name) }
val rnd = Random()
val colors = mutableListOf<Int>()
for (i in chartData.indices){
colors.add(Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)))
}
val dataSet=PieDataSet(pieEntry,getString(R.string.equity_title))
dataSet.colors=colors
binding.pieChart.data = PieData(dataSet)
binding.pieChart.isDrawHoleEnabled=false
binding.pieChart.legend.isWordWrapEnabled=true
binding.pieChart.invalidate()
}
这是我在设备中获得的UI
3条答案
按热度按时间gmxoilav1#
图例的文本太大,无法放入图中。一种方法是将它们保留在图外。可以添加以下属性来完成此工作:
setDrawInside()
请使用此代码:
这会将
legend
设置在图形之外。qgzx9mmu2#
我最终在FlexBoxLayout的帮助下这样做了
XML
图例布局
Kotlin代码
输出
n6lpvg4x3#
我使用的是同一个库,也遇到了同样的问题。要解决这个问题,请按照以下步骤操作:
1.设置图例的属性,如legend.setWordWrapEnabled(true)和legend.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT)。
1.最重要的是,在设置了piechart的所有属性之后,将piechart的'setData'方法放在最后。