Intereting Posts
Как использовать счетчик Как подключить Chrome с Android-устройством Как отобразить количество уведомлений в значке приложения запуска Java.lang.ClassNotFoundException для моего приложения Узнайте, будет ли текущая деятельность в конечном итоге выполняться в конечном итоге, после того как незавершенные отделочные операции исчезнут Включить заднюю камеру с помощью HTML5 Android ListView с элементами onClick Компиляция деиндексированного AOSP? Вертикальный свиток Android-библиотеки MuPDF Макет навигационного ящика заголовок на панели инструментов не меняется Когда удаляется группа уведомлений группы облачных сообщений Google Cloud Messaging? Как использовать MediaCodec для декодирования данных с сервера RTSP? Передавать данные из одной активности в другую в Xamarin.Android Установите layout_column и layout_row в GridLayout программно Android: долго нажимайте на дочерние представления ExpandableListView?

Android achartengine – Как распознать, какой бар затронут на гистограмме?

Я работаю над Android-приложением и использую AChartEngine для построения диаграмм. Все работает так, как должно, за исключением того, что я не могу понять, какой бар на графике затронут (не нажал). Кажется, что .getCurrentSeriesAndPoint () не работает в OnTouchListener. Он каждый раз возвращает NULL. Когда я использую OnClickListener, все работает нормально, но мне нужно знать, какой бар затронут (Action_Down и Action_Up), а не щелкнуть.

Является ли .getCurrentSeriesAndPoint () не работает в TouchListener вообще? Есть ли обходной путь или другой способ понять, какой бар касается?

mChartView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { SeriesSelection seriesSelection = mChartView.getCurrentSeriesAndPoint(); SimpleSeriesRenderer r = new SimpleSeriesRenderer(); switch(event.getAction()) { case MotionEvent.ACTION_DOWN:{ Toast.makeText(MainActivity.this, "DOWN", Toast.LENGTH_SHORT) .show(); if(seriesSelection != null) touchedBar = seriesSelection.getPointIndex(); break;} case MotionEvent.ACTION_UP:{ Toast.makeText(MainActivity.this, "UP", Toast.LENGTH_LONG) .show(); touchedBar = 0; break;} default: break; } mRenderer.removeAllRenderers(); r.setColor(Color.RED); r.setSelectedBar(ClickedBar); mRenderer.addSeriesRenderer(r); mChartView.repaint(); return true; } }); 

Доброжелательный христианин

Он должен работать с сенсорным прослушивателем. Однако вы все равно должны это сделать:

 mRenderer.setClickEnabled(true); 

AChartEngine использует onTouchEvent внутренне, поэтому возможно, что ваше событие касания вызывается после ACE, поэтому это может стать причиной не получения ожидаемых значений.

Когда вы хотите нажать и долго нажимать, вам необходимо установить:

 mRenderer.setOnClickable(false)