You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPAndroidChart中LineChart标记点TextView不显示问题排查

解决MPAndroidChart MarkerView只显示背景不显示文本的问题

我来帮你排查下为什么你的MarkerView只显示背景不显示文本,这几个关键问题需要调整:

1. 布局尺寸设置错误

你的Marker布局根容器用了match_parent作为宽高,这会让MarkerView强行占据整个父容器空间,导致TextView要么被背景覆盖,要么被挤出可视区域。MarkerView的布局应该用wrap_content来适配文本内容:

修改你的布局文件:

<?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="wrap_content"
    android:background="@drawable/battery_full"
    android:padding="8dp"
    android:gravity="center" >

    <TextView
        android:id="@+id/tvContent"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="1234"
        android:textAlignment="center"
        android:textColor="#000000"
        android:textSize="14sp" />
</RelativeLayout>

2. 自定义MarkerView的冗余实现与方法调用问题

你自定义的CustomMarkerView同时继承了MarkerView和实现了IMarker,但MarkerView本身已经实现了IMarker接口,这种冗余会导致潜在的方法冲突。另外,refreshContent方法里的调用顺序也需要调整——父类的refreshContent默认是空实现,不需要优先调用,直接设置文本即可:

修改你的CustomMarkerView:

public class CustomMarkerView extends MarkerView {
    private TextView textView;

    public CustomMarkerView(Context context, int layoutResource) {
        super(context, layoutResource);
        textView = findViewById(R.id.tvContent);
    }

    @Override
    public void refreshContent(Entry e, Highlight highlight) {
        // 直接设置文本即可,父类无特殊逻辑需要执行
        textView.setText(String.valueOf(e.getX()) + "777");
    }
}

3. 上下文选择不当

创建CustomMarkerView时你用了getApplicationContext(),这可能导致布局加载时的主题、样式不匹配,建议使用当前Activity的上下文(也就是this):

修改onCreate中的代码:

markerView = new CustomMarkerView(this, R.layout.tv_content);

做完这些调整后,重新运行项目,触摸图表上的点应该就能正常显示TextView的文本了。


内容的提问来源于stack exchange,提问作者Geeky bean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:33:00