-
-
Notifications
You must be signed in to change notification settings - Fork 9k
Highlighting
This section focuses on the topic of highlighting entries in the chart, both via tap-gesture and programmatically based on release v3.0.0.
-
setHighlightPerDragEnabled(boolean enabled)
: Set this to true on yourChart
to allow highlighting per dragging over the chart surface when it is fully zoomed out. Default: true -
setHighlightPerTapEnabled(boolean enabled)
: Set this to false on yourChart
to prevent values from being highlighted by tap gesture. Values can still be highlighted via drag or programmatically. Default: true -
setMaxHighlightDistance(float distanceDp)
: Sets the maximum highlight distance in dp. Taps on the chart further away from an entry than that distance will not trigger a highlight. Default: 500dp
In addition to that, highlighting can be configured for individual DataSet
objects:
dataSet.setHighlightEnabled(true); // allow highlighting for DataSet
// set this to false to disable the drawing of highlight indicator (lines)
dataSet.setDrawHighlightIndicators(true);
dataSet.setHighlightColor(Color.BLACK); // color for highlight indicator
// and more...
-
highlightValue(float x, int dataSetIndex, boolean callListener)
: Highlights the value at the given x-position in the given DataSet. Provide -1 as the dataSetIndex to undo all highlighting. The boolean flag determines wether the selection listener should be called or not. -
highlightValue(Highlight high, boolean callListener)
: Highlights the value represented by the providedHighlight
object. Provide null to undo all highlighting. The boolean flag determines wether the selection listener should be called or not. -
highlightValues(Highlight[] highs)
: Highlights the values represented by the givenHighlight[]
array. Provide null or an empty array to undo all highlighting. -
getHighlighted()
: Returns anHighlight[]
array that contains information about all highlighted entries, their x-index and dataset-index.
This library provides a number of listeners for callbacks upon interaction. One of them is the OnChartValueSelectedListener
, for callbacks when highlighting values via touch:
public interface OnChartValueSelectedListener {
/**
* Called when a value has been selected inside the chart.
*
* @param e The selected Entry.
* @param h The corresponding highlight object that contains information
* about the highlighted position
*/
public void onValueSelected(Entry e, Highlight h);
/**
* Called when nothing has been selected or an "un-select" has been made.
*/
public void onNothingSelected();
}
Simply let your class that should receive the callbacks implement this interface and set it as a listener to the chart:
chart.setOnChartValueSelectedListener(this);
The Highlight
class represents all data associated with a highlighted Entry
, such as the highlighted Entry
object itself, the DataSet
it belongs to, it's position on the drawing surface and more. It can be used to get information about an already highlighted Entry
, or used to provide information to the Chart
for an Entry
to be highlighted. Regarding that purpose, the Highlight
class provides two constructors:
/** constructor for standard highlight */
public Highlight(float x, int dataSetIndex) { ... }
/** constructor for stacked BarEntry highlight */
public Highlight(float x, int dataSetIndex, int stackIndex) { ... }
These constructors can be used to create a Highlight
object which allows to perform highlighting programmatically:
// highlight the entry and x-position 50 in the first (0) DataSet
Highlight highlight = new Highlight(50f, 0);
chart.highlightValue(highlight, false); // highlight this value, don't call listener
All user input in the form of highlight gestures is internally processed by the default ChartHighlighter
class. It is possible to replace the default highligher with a custom implementation using the below method:
-
setHighlighter(ChartHighlighter highlighter)
: Sets a custom highligher object for the chart that handles / processes all highlight touch events performed on the chart-view. Your custom highlighter object needs to extend theChartHighlighter
class.