如何从android mpchart库中删除缩放功能?

时间:2015-08-18 16:14:23

标签: android bar-chart

我想从条形图项目中删除缩放。 MpChart BarItem chart before scroll MpChart BarItem chart after scroll

当用户滚动条形图项时,y图例值会覆盖x图例值,或者y图例值会显示在X ax下方。

这里是条形图项目的代码:

  import ro.charttest.R;
  import android.content.Context;
  import android.graphics.Typeface;
  import android.view.LayoutInflater;
  import android.view.View;

  import com.github.mikephil.charting.charts.BarChart;
  import com.github.mikephil.charting.data.ChartData;
  import com.github.mikephil.charting.utils.ColorTemplate;
  import com.github.mikephil.charting.utils.Legend;
  import com.github.mikephil.charting.utils.XLabels;
  import com.github.mikephil.charting.utils.Legend.LegendPosition;
  import com.github.mikephil.charting.utils.XLabels.XLabelPosition;
  import com.github.mikephil.charting.utils.YLabels;
  import com.github.mikephil.charting.utils.YLabels.YLabelPosition;

  public class BarChartItem extends ChartItem {

private ColorTemplate mCt;
private Typeface mTf;

public BarChartItem(ChartData cd, Context c) {
    super(cd);        
    mCt = new ColorTemplate();
    mCt.addDataSetColors(new int[]{ R.color.colorful_1}, c);
    mCt.addDataSetColors(new int[]{ R.color.greens_2}, c);
    mTf = Typeface.createFromAsset(c.getAssets(), "tahoma.ttf");        
}

@Override
public int getItemType() {
    return TYPE_BARCHART;
}

@Override
public View getView(int position, View convertView, Context c) {

    ViewHolder holder = null;

    if (convertView == null) {

        holder = new ViewHolder();

        convertView = LayoutInflater.from(c).inflate(
                R.layout.list_item_barchart, null);
        holder.chart = (BarChart) convertView.findViewById(R.id.chart);

        convertView.setTag(holder);

    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    // apply styling
   //  holder.chart.setYLabelCount(10);
    holder.chart.setColorTemplate(mCt);
    holder.chart.setBarSpace(30);
    holder.chart.setStartAtZero(false);

    holder.chart.setScrollContainer(false);


    holder.chart.setYLabelTypeface(mTf);
    holder.chart.setXLabelTypeface(mTf);
    holder.chart.setValueTypeface(mTf);
    holder.chart.setDescription("");
    holder.chart.setDrawVerticalGrid(false);
    holder.chart.setDrawYLabels(true);
    holder.chart.setDrawYValues(true);
    holder.chart.setDrawGridBackground(false);

    holder.chart.setMaxVisibleValueCount(10);
    // sets the number of digits for values inside the chart
    holder.chart.setValueDigits(0);

    // disable 3D
    holder.chart.set3DEnabled(false);
   // holder.chart.setYLabelCount(10);
    holder.chart.setAutoFinish(true);
    // scaling can now only be done on x- and y-axis separately
    holder.chart.setPinchZoom(true);        

    XLabels xl = holder.chart.getXLabels();
    xl.setCenterXLabelText(true);
    xl.setPosition(XLabelPosition.BOTTOM);

    // set data
    holder.chart.setData(mChartData);

    // do not forget to refresh the chart
    holder.chart.invalidate();

    holder.chart.cancelLongPress();

    holder.chart.setYRange(0,  1.5f*holder.chart.getYMax(), false);

    YLabels yLabels = holder.chart.getYLabels();
    yLabels.mDecimals = 0;
    yLabels.setPosition(YLabelPosition.LEFT);

    XLabels xLabels = holder.chart.getXLabels();
    xLabels.setPosition(XLabelPosition.BOTTOM);

    Legend l = holder.chart.getLegend();
    l.setPosition(LegendPosition.BELOW_CHART_LEFT);
    l.setOffsetBottom(50f);
    l.setTypeface(mTf);

    return convertView;
}

private static class ViewHolder {
    BarChart chart;
}

}

4 个答案:

答案 0 :(得分:7)

我添加了以下行:

holder.chart.setTouchEnabled(false);

并删除了缩放功能以及与图表的所有可能的触摸交互。请参阅reference

答案 1 :(得分:2)

尝试一下:

        print(ckRecord.object(forKey: DatabaseNameStrings.recordFieldKeyCreationDate) as Any)
        print(ckRecord.object(forKey: DatabaseNameStrings.fieldNameCreatedAt) as Any)

答案 2 :(得分:0)

使用此功能禁用x方向的缩放

    chart.setVisibleXRangeMaximum(10);
    chart.setVisibleXRangeMinimum(10);

你可以使用

y方向做类似的事情

setVisibleYRangeMaximum功能

这里是参考链接https://github.com/PhilJay/MPAndroidChart/wiki/Modifying-the-Viewport

答案 3 :(得分:0)

禁用图表中的所有缩放。

chart.setScaleEnabled(false);