当前位置: 首页 > 知识库问答 >
问题:

如何在MPAndroid折线图中突出显示所选值

欧阳元魁
2023-03-14

我已经使用setDrawValues(false)禁用了LineChart中的所有值。现在我希望折线图中的特定值被启用时,用户触及到这一点。我使用highlightvales()尝试了它,但对我不起作用。

@Override
    public void onValueSelected(Entry entry, int i, Highlight highlight) { 
        //mchart.setHighlightEnabled(true);
        //mchart.highlightValue(1,1);
        Highlight[] highlights=mchart.getHighlighted();
        mchart.highlightValues(highlights);
    }

共有1个答案

宓博实
2023-03-14

您需要将MarkerView添加到LineChart

首先创建CustomMarkerView类。

public class CustomMarkerView extends MarkerView {

private TextView tvContent;

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

// 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("" + e.getVal()); // set the entry-value as the display text
}

@Override
public int getXOffset(float xpos) {
    // this will center the marker-view horizontally
    return -(getWidth() / 2);
}

@Override
public int getYOffset(float ypos) {
    // this will cause the marker-view to be above the selected value
    return -getHeight();
} }

在.xml中创建一个表示标记的布局。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="40dp"
  android:background="@drawable/markerImage" >

<TextView
    android:id="@+id/tvContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text=""
    android:textSize="12dp"
    android:textColor="@android:color/white"
    android:ellipsize="end"
    android:singleLine="true"
    android:textAppearance="?android:attr/textAppearanceSmall" />

</RelativeLayout>

最后,将其设置为图表

    lineChart.setDrawMarkerViews(true);
    CustomMarkerView customMarkerView = new CustomMarkerView(context, R.layout.custom_marker_view_layout);
    lineChart.setMarkerView(customMarkerView);

并确保在图表上启用了触摸。

LineChart.SetTouchEnabled(true);

你会得到你想要的结果。

 类似资料:
  • 我试图画一个三次线图,如下所示: 使用MPAndroid图表库。 我能画线,但不能画X轴和线之间的填充,如图所示。 已经经历了库和许多这样的问题。

  • 问题内容: 我找不到能帮助我解决Angular中这个简单问题的东西。与位置路径进行比较时,所有答案都与导航栏相关。 我使用list和构建了一个动态表。当我单击一行时,我试图为该行分配一个css类(选中),以突出显示该行已被用户选中的事实,并从先前突出显示的行中删除了该行。 我缺少在选定的行和CSS类分配之间进行绑定的方法。 我在每个()上应用了代码, 但我缺少应用更改的逻辑。 我的代码-Plunk

  • 我使用http://svn.openstreetmap.org/applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/demo.java中的代码为我的swing应用程序创建并运行一个映射。 我添加了几个MapMarkerDot来指示地图中的一些点,并使用如何从JMapViewer世界地图中获取鼠标单击位置来识别是否选

  • 我有一个Gridview,当我按下某个元素时,我想绘制背景。 我有一个适配器来动态加载gridview元素。我在适配器上有一个侦听器。在这个侦听器上,我用我想要的颜色放置背景,但它也会在列表中绘制另一个元素(我猜是在视图重新加载后,位置相同的元素)。 重要提示:我的最小API是9,我无法真正更改它。 以下是我的 getView 方法的代码(来自适配器): 下面是线性布局的侦听器(表示每个项目):

  • 我使用gridview在我的gridview中选择多个项目(图像)。 我使用< code > MultiChoiceModeListener 来实现这一点,问题是选中的项目没有突出显示 选择器xml: 当我触摸一个项目时,它被蓝色覆盖(我认为这是因为我使用了< code > GridView . setdrawselectorontop(true);)...我一抬起手指,蓝色就消失了。 我希望选择