如何在 android studio in kotlin 中制作折线图
How to make a line graph in android studio in kotlin
我正在山谷中做一个android应用程序,我想做一个折线图,但是我在哪里都找不到正确的文档,而且总是有错误。有人会给出正确的版本或显示正确的代码
enter image description here
说明如何从大约 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
如果你想仿照link的例子,必须声明lineGraph。在这种情况下,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" />
添加后,您必须转到主活动并在 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定义如下:
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)
}
}
我正在山谷中做一个android应用程序,我想做一个折线图,但是我在哪里都找不到正确的文档,而且总是有错误。有人会给出正确的版本或显示正确的代码
enter image description here
说明如何从大约 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
如果你想仿照link的例子,必须声明lineGraph。在这种情况下,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" />
添加后,您必须转到主活动并在 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定义如下:
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)
}
}