こんにちは私はhttps://github.com/limccn/Android-Chartsライブラリを使って、アンドロイドアプリでチャートの在庫データを表示しています。私はこのライブラリのキャンドルスティックチャートを使用しています。 1つのことを除いてすべてうまくいきます。ディスプレイデータのためにマウスの上にマウスを置いてチャートの中にスティックを置くとツールチップを表示できません。私はチャートを初期化するために以下のコードを使用しています。誰かがツールヒントを表示する方法を知っているか、ユーザーがチャートの棒にマウスを重ねたときにどのようにビューを添付できるかを知っています。Android-Charts - CandleStick Chart
private void initChart() {
for (int i = 0; i < chartData.size(); i++) {
//OHLCEntity(double open, double high, double low, double close, int date)
ChartData chartdata = chartData.get(i);
String dateString = chartdata.getT_Time().substring(0, chartdata.getT_Time().lastIndexOf("T"));
String timeString = chartdata.getT_Time().substring(chartdata.getT_Time().lastIndexOf("T") + 1, chartdata.getT_Time().toString().length());
Pattern p = Pattern.compile(":");
String[] times = p.split(timeString);
String dateValue = "";
if (times.length >= 3) {
dateValue = dateString.replaceAll("-", "").trim().toString() + times[0].trim().toString() + "" + times[1].toString().trim();
} else {
dateValue = dateString.replaceAll("-", "").trim().toString();
}
ohlc.add(new OHLCEntity(chartdata.getT_Open(), chartdata.getHigh(), chartdata.getLow(), chartdata.getT_Close(), Integer.valueOf(dateValue)));
}
ChartData maxds = Collections.max(chartData, new ChartComparator());
candlestickchart.setAxisXColor(Color.LTGRAY);
candlestickchart.setAxisYColor(Color.LTGRAY);
candlestickchart.setLatitudeColor(Color.GRAY);
candlestickchart.setLongitudeColor(Color.GRAY);
candlestickchart.setBorderColor(Color.LTGRAY);
candlestickchart.setLongitudeFontColor(Color.WHITE);
candlestickchart.setLatitudeFontColor(Color.WHITE);
// 最大显示足数
candlestickchart.setMaxSticksNum(chartData.size());
// 最大纬线数
// candlestickchart.setLatitudeNum(5);
// // 最大经线数
// candlestickchart.setLongitudeNum(3);
// 最大价格
candlestickchart.setMaxValue(maxds.getVolume());
// 最小价格
int minIndex = chartData.indexOf(Collections.min(chartData, new ChartComparator()));
candlestickchart.setMinValue(chartData.get(minIndex).getVolume());
candlestickchart.setDisplayLongitudeTitle(true);
candlestickchart.setDisplayLatitudeTitle(true);
candlestickchart.setDisplayLatitude(true);
candlestickchart.setDisplayLongitude(true);
candlestickchart.setBackgroundColor(Color.BLACK);
candlestickchart.setDataQuadrantPaddingTop(5);
candlestickchart.setDataQuadrantPaddingBottom(5);
candlestickchart.setDataQuadrantPaddingLeft(5);
candlestickchart.setDataQuadrantPaddingRight(5);
// candlestickchart.setAxisYTitleQuadrantWidth(50);
// candlestickchart.setAxisXTitleQuadrantHeight(20);
candlestickchart.setAxisXPosition(Axis.AXIS_X_POSITION_BOTTOM);
candlestickchart.setAxisYPosition(Axis.AXIS_Y_POSITION_RIGHT);
// 为chart2增加均线
candlestickchart.setStickData(new ListChartData<IStickEntity>(ohlc));
candlestickchart.setOnDisplayCursorListener(new IDisplayCursorListener() {
public void onCursorChanged(IDataCursor dataCursor, int displayFrom,
int displayNumber) {
candlestickchart.setDisplayFrom(displayFrom);
candlestickchart.setDisplayNumber(displayNumber);
candlestickchart.postInvalidate();
}
});
candlestickchart.setOnTouchGestureListener(new OnTouchGestureListener() {
/* (non-Javadoc)
*
* @param touchable
* @param event
* @see cn.limc.androidcharts.event.OnTouchGestureListener#onTouchDown(cn.limc.androidcharts.event.ITouchable, android.view.MotionEvent)
*/
@Override
public void onTouchDown(ITouchable touchable, MotionEvent event) {
super.onTouchDown(touchable, event);
candlestickchart.touchDown(new PointF(event.getX(), event.getY()));
}
/* (non-Javadoc)
*
* @param touchable
* @param event
* @see cn.limc.androidcharts.event.OnTouchGestureListener#onTouchMoved(cn.limc.androidcharts.event.ITouchable, android.view.MotionEvent)
*/
@Override
public void onTouchMoved(ITouchable touchable, MotionEvent event) {
super.onTouchMoved(touchable, event);
candlestickchart.touchMoved(new PointF(event.getX(), event.getY()));
}
/* (non-Javadoc)
*
* @param touchable
* @param event
* @see cn.limc.androidcharts.event.OnTouchGestureListener#onTouchUp(cn.limc.androidcharts.event.ITouchable, android.view.MotionEvent)
*/
@Override
public void onTouchUp(ITouchable touchable, MotionEvent event) {
super.onTouchUp(touchable, event);
candlestickchart.touchUp(new PointF(event.getX(), event.getY()));
}
});
candlestickchart.setAutoCalcValueRange(true);
candlestickchart.setDisplayCrossXOnTouch(true);
candlestickchart.setDisplayCrossYOnTouch(true);
}