Graphview库未正确显示y轴,人体舍入设置为false

时间:2017-06-16 11:44:23

标签: android android-graphview

我正在使用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,重新加载片段并再次添加),问题就不再存在了。对于我的生活,我无法弄清楚出了什么问题,请帮忙。

1 个答案:

答案 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
}
}