【问题标题】:How to make a line graph in android studio in kotlin [closed]如何在 kotlin 的 android studio 中制作折线图 [关闭]
【发布时间】:2021-08-19 11:52:39
【问题描述】:

我正在山谷中制作一个 android 应用程序,我想制作一个折线图,但我无处可找到正确的文档,而且总是有错误。有人会给出正确的版本或显示正确的代码

enter image description here

【问题讨论】:

  • 分享代码。不仅仅是问题
  • 查看代码。我在帖子中编辑的帖子是代码
  • 您使用哪个库来创建图表?
  • 我正在使用 MPAndroidChart

标签: android android-studio kotlin charts linechart


【解决方案1】:

说明如何从或多或少的 30 行代码中做到这一点,这很难。但我可以建议你搜索如何实现它搜索文章。点击here并关注文章。 希望能帮到你:-)

编辑

要解决lineChart错误,声明如下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        var lineChart: LineChart
}

确保导入:

import com.github.mikephil.charting.charts.LineChart

如果您在查找导入时遇到问题,请转到应用 build.gradle 并粘贴它:

repositories {
    google()
    mavenCentral()
    maven { url 'https://jitpack.io' }

}

和:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

编辑 2

如果你想遵循链接示例,必须声明 lineGraph。在这种情况下,线图只不过是activity_layout.xml 中声明的对象的id。事实上,您需要在您的activity_layout.xml 中添加这段代码:

<com.github.mikephil.charting.charts.LineChart
    android:id="@+id/lineChart"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:layout_marginStart="5dp"
    android:layout_marginEnd="5dp"
    android:padding="9dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

添加后,您必须转到 mainactivity 并在 onCreate 中写入:

class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
   
              val lineChart = findViewById<LineChart>(R.id.lineChart)
    }

要解决其他两个问题,把文章读到最后。其实CustomMarker是一个定义如下的类:

class CustomMarker(context: Context, layoutResource: Int):  MarkerView(context, layoutResource) {
    override fun refreshContent(entry: Entry?, highlight: Highlight?) {
        val value = entry?.y?.toDouble() ?: 0.0
        var resText = ""
        if(value.toString().length > 8){
            resText = "Val: " + value.toString().substring(0,7)
        }
        else{
            resText = "Val: " + value.toString()
        }
        tvPrice.text = resText
        super.refreshContent(entry, highlight)
    }

    override fun getOffsetForDrawingAtPoint(xpos: Float, ypos: Float): MPPointF {
        return MPPointF(-width / 2f, -height - 10f)
    }
}

【讨论】:

  • 我有问题,看帖子里的照片
  • 要么你的代码不完整,要么你没有声明一些变量。照片中的错误与您发布的代码无关。在照片中,您有一个 ShowForexActivity,而在您发布的代码中,您有一个 MainActivity。您是否有机会从另一个项目中获取代码?
  • 代码肯定是完整的,如何声明变量?
  • 我在整个屏幕的帖子中添加了一张图片
  • 我不知道自己做错了什么
最近更新 更多