Używam klasy MarkerView do wyświetlania widoków znaczników na wykresie. Utworzony układ widoków znaczników zawiera dwa widoki tekstowe, jeden pod drugim.MarkerView wychodzi z wykresu dla ostatniego punktu na wykresie
Problem, przed którym stoję, polega na tym, że widok znacznika dla ostatniego punktu na wykresie znajduje się w połowie na wykresie, a połowa poza wykresem. Dwa obrazy poniżej stanu Problem jasno:
Pierwszy obraz przedstawia markerview do punktu w środku wykresu, który pokazuje bez problemu:
Drugi obraz, jak pokazano poniżej , pokazuje widok znacznika dla ostatniego punktu wykresu, który znajduje się w połowie zakresu wykresu.
Jak mogę dostać ten markerview aby ustawić tak, że pokazuje się w obszarze wykresu.
Wiki nie podaje żadnych dostosowań dla znacznika. Czy są jakieś dodatkowe dostosowania?
Również w przypadku wykresu wielowierszowego, jeśli kliknę tylko jeden z punktów linii, widok znacznika pojawia się bez problemu. Ale jeśli kliknę znacznik w dowolnym punkcie na drugiej linii, aplikacja nie powiedzie się. Każdy pomysł, dlaczego tak się dzieje.
Kod dla klasy markerview podano poniżej:
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();
}
}
Dwie właściwości XML nie pomagają. –
Po kliknięciu punktu na wykresie pojawiają się dwie linie przecinające się w punkcie kliknięcia. Proszę odnieść się do obrazów w pytaniu. Jak usunąć te linie? –
Są one nazywane liniami wskaźnika podkreślenia, zapoznaj się z [dokumentacją] (https://github.com/PhilJay/MPAndroidChart/wiki/Interaction-with-the-Chart). –