我正在使用github的graphview库,简称为Graphview。
我的日期为x轴,重量为kg,为y轴。图表以片段形式设置。您可以在autocompletextview中输入图表的名称,将新图表添加到graphview中:
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getActivity());
DateAsXAxisLabelFormatter dateAsXAxisLabelFormatter = new
DateAsXAxisLabelFormatter(getActivity(), DateFormat.getDateInstance());
graphView.getGridLabelRenderer().setLabelFormatter(dateAsXAxisLabelFormatter);
graphView.getGridLabelRenderer().setNumHorizontalLabels(3);// only 4 because of the space
graphView.getGridLabelRenderer().setHumanRounding(false);
graphView.getViewport().setXAxisBoundsManual(true);
graphView.getViewport().setYAxisBoundsManual(false);
String[] names= getNames();
ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
android.R.layout.simple_dropdown_item_1line, names);
addGraphValue.setAdapter(adapter);
addGraphValue.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH){
addToGraph(addGraphValue.getText().toString());
}
return true;
}
});
addToGraph执行一个函数,根据某些条件找到y值,该值与addGraphValue autoCompleteTextview中的文本有关。找到该值后,它将与相应的日期一起添加到lineGraphSeries中。在此之后发生了多次,系列将添加到图表中:
for(/*not important*/){
//Finding the y-value
dataPoint = new DataPoint(date, y);
mLineGraphSeries.appendData(dataPoint, false, 100);
}
mLineGraphSeries.setColor(mColors[position]);
graphView.addSeries(mLineGraphSeries);
mLineGraphSeries.setDrawDataPoints(true);
所以这就出现了问题,当添加第一个值时,y轴变得疯狂并增加了许多值: Picture of it happening
现在如果我打开人类舍入,y值是固定的,但日期显示奇怪: Picture of that
如果我重新加载页面(保存linegraphseries,重新加载片段并再次添加),问题就不再存在了。对于我的生活,我无法弄清楚出了什么问题,请帮忙。
答案 0 :(得分:1)
你必须覆盖GraphView和你做的第一件事,你调用init();同样在XML中,您需要从com.jjoe64.graphview.GraphView更改为您的类所在的位置(例如:com.myName.android.myapplication.app.CustomGraphView
这应该可以解决您的问题
public class CustomGraphView extends GraphView {
public CustomGraphView(Context context) {
super(context);
}
public CustomGraphView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomGraphView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void init() {
super.init();
// set the custom style
}
}