MPAndroidChart的坐标轴,自定义坐标轴数据,如何另辟蹊径

公司需要将体重秤的数据以折线图显示出来,奈何能力不够,x轴数据自定义,在苦试无果后,吾,放弃了。
后想到用布局去代替坐标轴。做出来的效果先放一下。

30天的
七天的

CHART-XML.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".line666">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1">
    <Button
        android:text="周"
        android:id="@+id/zh"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="月"
        android:id="@+id/yu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10">
        <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/line_chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/></LinearLayout>
    <LinearLayout
        android:id="@+id/kk2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal">

    </LinearLayout>

</LinearLayout>
R.layout.text
<?xml version="1.0" encoding="utf-8"?>

<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center"
    android:id="@+id/text"
    android:text="N/A"

    android:layout_weight="1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

导入数据

导入数据库数据,当天开始的三十天内数据。
    public void bianli(Long s){
        if(s==30){
            s = (long)86400000*30;
        }else if(s==7){
            s = (long)86400000*7;
        }
        entries.clear();
        linearLayout.removeAllViews();

        cursor = db.query("tizhong",null, "riqi > ?", new String[]{sdf.format(new Date(System.currentTimeMillis()-s))}, null, null, null);
        if (cursor.moveToFirst()) {
            do {
// 遍历Cursor对象, 取出数据并打印
                a2= cursor.getString(cursor.getColumnIndex
                        ("id"));
                a4= cursor.getString(cursor.getColumnIndex
                        ("riqi"));
                a3 = cursor.getString(cursor.getColumnIndex
                        ("neirong"));
                //加入view来代替坐标轴
                View view2 = LayoutInflater.from(this).inflate(R.layout.text,linearLayout,false);
                    entries.add(new Entry(Float.parseFloat(a2),Float.parseFloat(a3)));
                TextView textView = view2.findViewById(R.id.text);
                textView.setText(a4);
                linearLayout.addView(view2);
            } while (cursor.moveToNext());
        }cursor.close();
    }
//折线图部分

 LinearLayout linearLayout;
 LineChart lineChart;
     XAxis x;
      AxisBase y,y2;
      List<Entry> entries;
        
         //实例化
          lineChart = (LineChart) findViewById(R.id.line_chart);
         linearLayout= findViewById(R.id.kk2);
          entries = new ArrayList<Entry>();
       x = lineChart.getXAxis();
       //左y轴
        y = lineChart.getAxisLeft();
        //右y轴
        y2 = lineChart.getAxisRight();
        
LineDataSet dataSet = new LineDataSet(entries, "Label");
dataSet.setLineWidth(1f);
LineData lineData = new LineData(dataSet);

//关闭缩放,做戏做全套

lineChart.setScaleEnabled(false);
lineChart.setScaleXEnabled(false);
lineChart.setScaleYEnabled(false);
//x轴换到下面
x.setPosition(XAxis.XAxisPosition.BOTTOM);
 y2.setEnabled(false);
   //设置x标轴标签文字颜色
        x.setTextColor(Color.TRANSPARENT);
        //设置x此轴网格线颜色
        x.setGridColor(Color.TRANSPARENT);
        
        y.setAxisMaximum(100f);
        y.setAxisMinimum(0f);
        //显示数据
         dataSet.setDrawValues(true);
         //以下设置百度的-----------------------||||||
//设置折线粗细
        dataSet.setLineWidth(2);
//设置是否填充(效果图中颜色渐变效果)
        dataSet.setDrawFilled(true);
//设置折线颜色
        dataSet.setColor(Color.YELLOW);
//设置填充的drawable
        dataSet.setFillDrawable(getResources().getDrawable(R.drawable.cxk));
//是否绘制折线的点
        dataSet.setDrawCircles(true);
//设置模式
        dataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
        //标记数据显色
        dataSet.setValueTextColor(Color.WHITE);
        //高亮标记横竖线的颜色
        dataSet.setHighLightColor(Color.BLACK);
        //刷新
         lineChart.setData(lineData);
        lineChart.invalidate();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值