Внешний вид TextView маркера MPAndroidChart - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь добавить маркер, когда касаюсь точки на линейной диаграмме.Я пробовал разные способы, чтобы он работал, но я не могу заставить его представить текст в 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();
}

После ввода записей в DataSet я вызываю notifyDataSetChanged () и invalidate ().

Класс просмотра пользовательского маркера:

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 нет текста).

Что я делаю неправильно ???

1 Ответ

0 голосов
/ 29 мая 2018

Протестировано ваше дело, проблема в

android:textAlignment="center"

вашего маркера, удалите его, и текст будет отображаться.

Маркер имеет некоторые конфликты с атрибутами textAlignment и gravity.Просто сделайте вашу TextView ширину wrap_content и она будет отцентрирована.

...