gpt4 book ai didi

java - 如何制作显示 x 轴和 y 轴值的弹出窗口

转载 作者:行者123 更新时间:2023-12-01 06:10:35 24 4
gpt4 key购买 nike

如折线图所示image 。如何制作弹出窗口来显示 x 和 y 轴的值。当我触摸折线图中的节点时,我想在相应位置上显示带有相应 X、Y 值的弹出窗口。就像上面的图片链接一样。

final LineChart lineChart = (LineChart) findViewById(R.id.chart);

XAxis xl = lineChart.getXAxis();
xl.setPosition(XAxis.XAxisPosition.BOTTOM);
ArrayList<Entry> entries = new ArrayList<>();
entries.add(new Entry(4f, 0));
entries.add(new Entry(8f, 1));
entries.add(new Entry(6f, 2));
entries.add(new Entry(2f, 3));
entries.add(new Entry(18f, 4));
entries.add(new Entry(9f, 5));

final LineDataSet dataset = new LineDataSet(entries , "y-axies");
// creating labels
final ArrayList<String> labels = new ArrayList<String>();
labels.add("January");
labels.add("February");
labels.add("March");
labels.add("April");
labels.add("May");
labels.add("June");

LineData data = new LineData(labels, dataset);
lineChart.setData(data); // set the data and list of lables into chart
lineChart.setDescription("Description"); // set the description
dataset.setDrawCubic(true);
dataset.setDrawFilled(true);
dataset.setHighlightEnabled(true);
lineChart.setTouchEnabled(true);
dataset.setColors(ColorTemplate.COLORFUL_COLORS);
lineChart.animateY(5000);

最佳答案

如果您使用 MPAndroidChart 库,您可以使用 native MarkerView 类来实现此目的。您可以在 Github 托管项目的 wiki 中找到说明。

编辑:我添加一些信息,我们如何实现这一目标:1. 您必须实现 MarkerView 类,以便在图表上绘制弹出窗口。示例类:

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();
}

2.如果你有这个,接下来你必须定义带有弹出窗口布局的 xml 文件。示例 XML:

<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>

  • 之后,您只需将自定义类附加到图 TableView :
  • CustomMarkerView mv = new CustomMarkerView(Context, R.layout.custom_marker_view_layout);
    chart.setMarkerView(mv);

    之后,您的图表上将出现功能齐全的弹出窗口。链接到网站以获取更多信息:https://github.com/PhilJay/MPAndroidChart/wiki/MarkerView

    关于java - 如何制作显示 x 轴和 y 轴值的弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35841885/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com