java - 如何通过 MPandroidChart 在我的蜡烛图上添加突出显示文本?

标签 java android mpandroidchart

enter image description here 我只是想在图表中添加“在突出显示十字准线周围显示一个小方 block ,当我在图表上滑动时显示 Y 轴的数据”, 例如,如果我使用折线图 条目数据由以下for循环构造

for (int i = 0; i <= barcount; i ++) {
LinValues.add (new Entry (i, 10000 + 2 * i));
}
///Set LineDataSet
LineDataSet setline = new LineDataSet (LinValues, "AVER");
setline.setAxisDependency (YAxis.AxisDependency.LEFT);
setline.setColor (Color.GREEN);
setline.setLineWidth (1f);
setline.setDrawCircles (false);
setline.setDrawValues ​​(false);
setline.setHighLightColor (Color.WHITE);
LineData line = new LineData (setline);
Legend l =combchart.getLegend();
l.setTextColor(Color.WHITE);
YAxis yLAxis =combchart.getAxisLeft();
yLAxis.setTextSize(22f);
yLAxis.setLabelCount(5,true);
yLAxis.setTextColor(Color.WHITE);
YAxis yRAxis = combchart.getAxisRight();
yRAxis.setEnabled(false);
Linechat.setData (line);

如何将“LinValues”中的“第i个值”添加到第i个十字准线旁边,并且当我滑动到“第n个数据点”时,十字准线附近的值将从“LinValues”更改为“第n个值”? 你能帮我吗????

最佳答案

好的,这可以通过使用标记 View 来完成,请按照以下说明操作:

首先在您的项目中添加java类CustomMarkerView并在其中编写以下代码。

package maniac.professionalchartsfree.Utilities;

import android.content.Context;
import android.widget.TextView;

import com.github.mikephil.charting.components.MarkerView;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.highlight.Highlight;

import maniac.professionalchartsfree.R;

/**
 * Created by saad.rafique on 1/5/2018.
*/

public class CustomMarkerView extends MarkerView
{
private TextView tvContent;

public CustomMarkerView(Context context, int layoutResource, int valueSize, int valueColor)
{
    super(context, layoutResource);
    // this markerview only displays a textview
    tvContent = findViewById(R.id.tvContent);
    tvContent.setTextSize(valueSize);
    tvContent.setTextColor(valueColor);
}

// callbacks everytime the MarkerView is redrawn, can be used to update the
// content (user-interface)

@Override
public void refreshContent(Entry e, Highlight highlight)
{
    tvContent.setText("x: " + e.getX() + "\n" +"y: " + e.getY()); // set the entry-value as the display text
}

}

之后在布局文件夹中创建一个 custom_marker.xml 文件并在其中写入以下代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="@drawable/markers_bg"
>

<TextView
    android:id="@+id/tvContent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:paddingBottom="15dp"
    android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>

之后,在您要创建图表的 Activity 中添加方法:

public CustomMarkerView markerView(Context context)
{
    CustomMarkerView mv = new CustomMarkerView(context, R.layout.custom_marker, 16, Color.WHITE);
    mv.setOffset(- mv.getWidth() / 2, -mv.getHeight()-25);
    return mv;
}

之后添加以下行:

    lineChart.setDrawMarkers(true);
    lineChart.setMarker(markerView(context));

现在运行您的项目,当您单击折线图上的点时,您将得到您想要的内容。

关于java - 如何通过 MPandroidChart 在我的蜡烛图上添加突出显示文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49078402/

相关文章:

java - MPAndroidChart 没有更新

java - 与 Sql Server 2008 的 JDBC 连接

java - 使用全局变量从内部函数获取空字符串

ios - 丹尼尔金迪/图表 : possible to rotate label of ChartLimitLine by 90 degrees?

android - FragmentActivity 无法解析为类型

java - 图库不会显示已保存的图像

android - 使用 MPAndroidChart 库显示水平条形图,如下图所示

java - SWT 复合对齐

java - java.io.DataOutputStream 类中的 writeChar 和 writeShort 方法有什么区别?

Eclipse + Win XP 上的 Android 开发 - 自动完成语法挂起