Android GraphView调整圆形数字的水平标签位置

时间:2015-09-11 20:24:30

标签: android android-graphview

我正在使用Android Graph View来显示折线图。我需要更改水平标签以获得漂亮的圆形数字。在附加的屏幕截图中,值为

True

我需要调整水平标签的位置和从它上面垂下的垂直线,以便标签读取

1
11:15
22:29
33:44

上述屏幕截图的代码使用此基类

0
11:00
23:00
33:44 

和这个子类来呈现图形

protected TextView text;
protected GraphView graph;

@Override
public View onCreateView(final LayoutInflater inflater,
                         ViewGroup container,
                         Bundle savedInstanceState)
{
    View view =  inflater.inflate(R.layout.ride_chart_fragment, null, false);

    graph = (GraphView) view.findViewById(R.id.graph);
    if (graph==null){
        Log.e("Rides","Graph should not ne null");
        return view;
    }
    Series series = linePoints();
    if (series==null) return view;


    graph.getGridLabelRenderer().setNumHorizontalLabels(4);

    graph.addSeries(series);
    setViewport(graph, series);

    text = (TextView)view.findViewById(R.id.textView);
    text.setVisibility(View.INVISIBLE);


    graph.getGridLabelRenderer().setLabelFormatter(new DefaultLabelFormatter() {
        @Override
        public String formatLabel(double value, boolean isValueX) {
            if (isValueX) {
                // show normal x values
                return UnitConverter.secondsToInterval((float) value);
            } else {

                return super.formatLabel(value, isValueX) + units(new Settings(inflater.getContext()));
            }
        }
    });

    graph.getGridLabelRenderer().setLabelVerticalWidth((int)getResources().getDimension(R.dimen.graph_label_vertical_width));
    graph.getGridLabelRenderer().setLabelHorizontalHeight((int)getResources().getDimension(R.dimen.graph_label_vertical_height));



    graph.getGridLabelRenderer().setGridColor(Color.parseColor("#20000000"));
    graph.getGridLabelRenderer().setGridStyle(GridLabelRenderer.GridStyle.BOTH);
    //graph.getGridLabelRenderer().
    return view;
}

我没有看到任何方式使用库这样做,所以我正在考虑更改源代码。我错过了API吗?有人建议在代码中添加此功能的位置。

Graph Screen Shot

1 个答案:

答案 0 :(得分:1)

你有两种方式:

1)(困难)使用动态视口查看源代码并找到完成humanRound的点(GridLabelRenderer.java)

理解并修改;)

2)使用固定视口并自行计算最小和最大边界,您可以更改numberOfHorizo​​ntalLabels以获得最佳匹配。