【发布时间】:2015-07-22 01:19:36
【问题描述】:
我正在使用 MarkerView 类在图表中显示标记视图。我创建的标记视图布局包含两个文本视图,一个在另一个之下。
我面临的问题是图表上最后一个点的标记视图一半在图表内,一半在图表外。下面的两张图片清楚地说明了问题:
第一张图片显示了图表中心点的标记视图,显示没有任何问题:
如下图所示,第二张图片显示了图表最后一个点的标记视图,该点位于图表内的一半。
如何调整此标记视图以使其显示在图表区域内。
wiki 没有声明标记视图的任何自定义。还有更多的自定义吗?
另外,在多折线图的情况下,如果我只点击其中一个折线点,markerview 就没有问题。但是,如果我在另一行的任何一点上单击标记视图,应用程序就会失败。知道为什么会这样。
markerview 类的代码如下:
public class TooltipView extends MarkerView {
private BaseGraphMetadata mBaseGraphMetadata;
private TextView mTooltipDate, mTooltipValue;
public TooltipView(Context context, int layoutResource, BaseGraphMetadata baseGraphMetadata) {
super(context, layoutResource);
mTooltipDate = (TextView)findViewById(R.id.tooltip_date);
mTooltipValue = (TextView)findViewById(R.id.tooltip_value);
mBaseGraphMetadata = baseGraphMetadata;
}
@Override
public void refreshContent(Entry entry, int i) {
List<DrillDownInfo> drillDownInfoList = (List<DrillDownInfo>) entry.getData();
DrillDownInfo drillDownInfo = drillDownInfoList.get(i);
Map<String, String> group = drillDownInfo.getGroupByNameVsGroupByValue();
Iterator iterator = group.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry pair = (Map.Entry)iterator.next();
if(pair.getKey()!=null && pair.getValue()!=null) {
String key = (String) pair.getKey();
key = key.toUpperCase();
Double value = Double.parseDouble((String) pair.getValue());
String formattedValue = mBaseGraphMetadata.getDataFormatter().getFormattedValue(value);
mTooltipDate.setText(key + " : " + formattedValue);
}
iterator.remove();
}
mTooltipValue.setText(String.valueOf("VALUE : "+entry.getVal()));
}
@Override
public int getXOffset() {
return -(getWidth() / 2);
}
@Override
public int getYOffset() {
return -getHeight();
}
}
【问题讨论】:
标签: android charts mpandroidchart