首页 > 解决方案 > MP android图表线图布局参数

问题描述

我想绘制 12 个折线图。所以我在滚动视图中放置了一个线性布局。我将使用 12 个图表填充线性布局。我希望每个图表的高度等于屏幕的宽度(因为我在横向模式下查看图表)。我的代码是这样的:

class MainActivity : AppCompatActivity() {

private var screenHeight = 0
private var screenWidth = 0

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
    setContentView(R.layout.activity_main)

    val displayMetrics = DisplayMetrics()
    windowManager.defaultDisplay.getMetrics(displayMetrics)
    screenWidth = displayMetrics.widthPixels
    screenHeight = displayMetrics.heightPixels
    Log.i("width", screenWidth.toString())
    Log.i("height", screenHeight.toString())

    val chartHeight = screenHeight / 12
    for (i in 0..11){
        val lineChart = LineChart(this)
        lineChart.layoutParams.height = chartHeight  //line 33 giving error
        linearLayout.addView(lineChart)
    }
}
}

我有以下问题:

  1. 我想将折线图的宽度设置为,LayoutParams.match_parent但是当 IDE 要求我导入类LayoutParams时,我得到的选项是RelativeLayout,和许多其他选项FrameLayoutViewGroup但其中任何一个都与LineChart.

  2. 我提到了这个,但它不适用于 LineChart。我不知道为什么。我收到此错误:

AndroidRuntime:致命异常:主进程:atharva.example.com.graphlist,PID:29323 java.lang.RuntimeException:无法启动活动 ComponentInfo{atharva.example.com.graphlist/atharva.example.com.graphlist.MainActivity}: java.lang.NullPointerException:尝试在空对象引用上写入字段“int android.view.ViewGroup$LayoutParams.width” 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 在 android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5476) 在 android.app。 ActivityThread.access$1200(ActivityThread.java:229) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1827) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:7329) 在 java。 com.android.internal.os.ZygoteInit 中的 lang.reflect.Method.invoke(本机方法)$MethodAndArgsCaller.run(ZygoteInit.java:1230) com.android.internal.os.ZygoteInit。主要(ZygoteInit.java:1120)

引起:java.lang.NullPointerException:尝试 在 atharva.example.com.graphlist.MainActivity$override.onCreate(MainActivity.kt: 33) atharva.example.com.graphlist.MainActivity$override.access$dispatch(MainActivity.kt) atharva.example.com.graphlist.MainActivity.onCreate(MainActivity.kt:0) 在 android.app.Activity.performCreate(Activity.java:6904) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)

  1. 第0行的错误(参考上面的错误日志)是什么意思?

请帮助我通过 kotlin 代码为 MP Android LineChart 等自定义视图设置布局参数

标签: androidandroid-layoutkotlinmpandroidchart

解决方案


您没有设置图表的宽度值。尝试创建新LayoutParams对象。这对我有用。

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams([your_width], [your_height]);
lineChart.setLayoutParams(params);

希望能帮助到你。


推荐阅读