MPAndroidChart Marker 的 TextView 外观
MPAndroidChart Marker's TextView appearance
我试图在触摸折线图上的一个点时添加标记。
我尝试了不同的方式让它工作,但我无法让它在 TextView 中显示文本。
private IMarker markerView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
mChart = findViewById(R.id.peaks_chart);
mChart.setTouchEnabled(true);
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
mChart.setPinchZoom(true);
mChart.setBackgroundColor(Color.LTGRAY);
markerView = new CustomMarkerView(getApplicationContext(),R.layout.tv_content);
mChart.setMarker(markerView);
mChart.setDrawMarkers(true);
mChart.getLegend().setEnabled(true);
XAxis xl = mChart.getXAxis();
xl.setTypeface(mTfLight);
xl.setTextColor(Color.WHITE);
xl.setDrawGridLines(false);
xl.setDrawLabels(true);
xl.setEnabled(true);
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setTypeface(mTfLight);
leftAxis.setTextColor(Color.WHITE);
leftAxis.setDrawGridLines(false);
leftAxis.setDrawLabels(true);
leftAxis.setEnabled(true);
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setEnabled(false);
dataSet_r = new LineDataSet(null,"right nost");
dataSet_r.setDrawValues(true);
rChartLineData = new LineData();
}
在我向数据集输入条目后,我调用 notifyDataSetChanged() 并
无效()。
自定义标记视图 class:
public class CustomMarkerView extends MarkerView implements IMarker
{
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");
super.refreshContent(e, highlight);
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/battery_full"
android:gravity="center"
>
<TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
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>
图表按预期绘制,但当我按下图表上的某个点时,只显示背景图像而没有文本(即使我不尝试更改文本,TextView 中也没有文本) .
我做错了什么???
测试了你的情况,问题是
android:textAlignment="center"
您的标记,将其移除,文本将会显示。
标记与 textAlignment
和 gravity
属性有一些冲突。
只需将 TextView
宽度设置为 wrap_content
,它就会居中。
我试图在触摸折线图上的一个点时添加标记。 我尝试了不同的方式让它工作,但我无法让它在 TextView 中显示文本。
private IMarker markerView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
mChart = findViewById(R.id.peaks_chart);
mChart.setTouchEnabled(true);
mChart.setDragEnabled(true);
mChart.setScaleEnabled(true);
mChart.setPinchZoom(true);
mChart.setBackgroundColor(Color.LTGRAY);
markerView = new CustomMarkerView(getApplicationContext(),R.layout.tv_content);
mChart.setMarker(markerView);
mChart.setDrawMarkers(true);
mChart.getLegend().setEnabled(true);
XAxis xl = mChart.getXAxis();
xl.setTypeface(mTfLight);
xl.setTextColor(Color.WHITE);
xl.setDrawGridLines(false);
xl.setDrawLabels(true);
xl.setEnabled(true);
YAxis leftAxis = mChart.getAxisLeft();
leftAxis.setTypeface(mTfLight);
leftAxis.setTextColor(Color.WHITE);
leftAxis.setDrawGridLines(false);
leftAxis.setDrawLabels(true);
leftAxis.setEnabled(true);
YAxis rightAxis = mChart.getAxisRight();
rightAxis.setEnabled(false);
dataSet_r = new LineDataSet(null,"right nost");
dataSet_r.setDrawValues(true);
rChartLineData = new LineData();
}
在我向数据集输入条目后,我调用 notifyDataSetChanged() 并 无效()。
自定义标记视图 class:
public class CustomMarkerView extends MarkerView implements IMarker
{
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");
super.refreshContent(e, highlight);
}
}
布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/battery_full"
android:gravity="center"
>
<TextView
android:id="@+id/tvContent"
android:layout_width="match_parent"
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>
图表按预期绘制,但当我按下图表上的某个点时,只显示背景图像而没有文本(即使我不尝试更改文本,TextView 中也没有文本) .
我做错了什么???
测试了你的情况,问题是
android:textAlignment="center"
您的标记,将其移除,文本将会显示。
标记与 textAlignment
和 gravity
属性有一些冲突。
只需将 TextView
宽度设置为 wrap_content
,它就会居中。