Mpandroidchart 水平条形图moveViewToX不';行不通

Mpandroidchart 水平条形图moveViewToX不';行不通,mpandroidchart,Mpandroidchart,总结 使用条形图时,一切都按预期工作,但moveViewToX不适用于水平条形图。我用相同的代码进行了测试,只更改了XML,错误只影响了HorizontalBarChart 我搜索了打开的问题(最相关的是#2546,该问题已关闭,建议的解决方案在我的案例中不起作用)并搜索了StackOverflow,但我还没有找到解决方案 设备: 设备:小米红米注4 安卓6.0版 库版本3.1.0-alpha 下面是相关的代码,是用Kotlin编写的。 以下是xml: <?xml version="1.0

总结 使用条形图时,一切都按预期工作,但moveViewToX不适用于水平条形图。我用相同的代码进行了测试,只更改了XML,错误只影响了HorizontalBarChart

我搜索了打开的问题(最相关的是#2546,该问题已关闭,建议的解决方案在我的案例中不起作用)并搜索了StackOverflow,但我还没有找到解决方案

设备: 设备:小米红米注4 安卓6.0版 库版本3.1.0-alpha

下面是相关的代码,是用Kotlin编写的。 以下是xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.github.mikephil.charting.charts.HorizontalBarChart
        android:id="@+id/priceAlertsChart"
        android:layout_width="match_parent"
        android:layout_height="300dp"/>
</LinearLayout>

和kt文件:

override-fun-onCreate(savedInstanceState:Bundle?){
val priceAlerts=mutableListOf()
对于(0..20中的i){
添加(i,PriceChangeInfo(i.toString())
,Random.nextDouble(-2.5,2.5)))
}
showPercentChangeDialog(priceAlerts.toTypedArray(),Date().time)
}
@SuppressLint(“充气参数”)
private fun showPercentChangeDialog(priceChangeInfo:Array?,lastUpdate:Long)
{
val项目=价格变更信息?.map{
它被命名为PriceChangeInfo
}?.reversed()?:返回
val v=布局平坦。充气(R.layout.price\u alerts\u dialogos,null)
//v.lastUpdateTextView.text=getString(R.string.changes\u自,timeLapse(lastUpdate))
v、 priceAlertsChart.apply{
xAxis.apply{
位置=XAxis.XAxisPosition.BOTTOM
setDrawAxisLine(真)
setDrawGridLines(假)
粒度=.3f
labelCount=if(items.size>10)10 else items.size
valueFormatter=IAxisValueFormatter{value,\->
项目[value.toInt()]符号
}
}
带多个(轴左、轴右){
setDrawAxisLine(真)
setDrawGridLines(真)
}
legend.isEnabled=false
设置牵引杆阴影(错误)
//设置杆上的DrawValueUpper(真)
description.isEnabled=false
setPinchZoom(错误)
setDrawGridBackground(假)
数据={
val green=Color.rgb(110190102)
val red=Color.rgb(211,74,88)
val entries=mutableListOf()
val colors=mutableListOf()
items.forachined{索引,信息->
颜色。添加(如果(信息更改>0)绿色或红色)
entries.add(BarEntry(index.toFloat(),info.change.toFloat(),info.symbol))
}
val set1=BarDataSet(条目,“更改”)。应用{
setDrawIcons(错误)
setDrawValues(假)
设置颜色(颜色)
valueFormatter=IValueFormatter{
_,条目,u,->
formatNumber(entry.y.toDouble(),false,false,小数=2)+“%
}
}
val dataSets=mutableListOf().apply{
添加(set1)
}
BarData(数据集)。应用{
setValueTextSize(10f)
条宽=.4f
}
}()
设置可视范围最大值(10f)
//这在水平条形图上不起作用
moveViewToX(data.entryCount.toFloat())
}
AlertDialog.Builder(this).setTitle(R.string.price_alerts).setView(v)
.setPositiveButton(R.string.ok){{}:DialogInterface,}:Int->
意图?.extras?.clear()
}.show()
}
//依赖关系
具有多个参数的乐趣(变量参数:T,块:T.()->单位){
阿格斯·弗雷奇{
it.apply(块)
}
}
数据类PriceChangeInfo(变量符号:String,变量更改:Double):可包裹{
构造函数(地块:地块):此(
parcel.readString()!!,
parcel.readDouble()){}
覆盖地块(地块:地块,标志:Int){
包裹。写线(符号)
包裹。可写双倍(更改)
}
覆盖有趣的描述内容():Int{
返回0
}
同伴对象创建者:Parcelable.CREATOR{
覆盖createFromParcel(地块:地块):价格变更信息{
退货价格变更信息(包裹)
}
覆盖新数组(大小:Int):数组{
返回阵列fnulls(大小)
}
}
}
我已经在github上发布了一个问题:

任何可能的解决方案都将受到高度赞赏。提前感谢。

我已使用以下方法解决了此问题:

moveViewTo(0f,data.entryCount.f,YAxis.AxisDependency.LEFT)
这对我很有用:

chart.resetViewPortOffsets()
            chart.moveViewToX(chart.highlighted[0].x)

我在这个库的iOS端口上遇到了同样的问题,这就解决了这个问题。