我刚刚开始学习Android的代码和开发。
现在,我试图制作这样的东西: Project Fi App UI 但是,我无法在MPAndroidChart库中找到参数或方法来设置BarChart(或我正在使用的HorizontalBarChart)中条形图的比例。 BarChart中的栏自动决定其比例。我想要的是Y轴的固定最大范围,图中条形图的比例根据其值而变化。
另一个问题是我无法摆脱每个栏上的标签。我写了
barChart.setDrawValueAboveBar(false);
但是Bar仍然有一个右侧的值。
包含BarChart的片段的屏幕截图: Screenshot
这里是完整的代码
public class MainFragment extends android.support.v4.app.Fragment{
public MainFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.main_fragment, container, false);
HorizontalBarChart barChart = (HorizontalBarChart)rootView.findViewById(R.id.time_chart);
ArrayList<BarEntry> vals = new ArrayList<BarEntry>();
BarEntry val = new BarEntry(0.20f,0);
vals.add(val);
BarDataSet setTime = new BarDataSet(vals,"time used");
setTime.setAxisDependency(YAxis.AxisDependency.LEFT);
setTime.setColor(R.color.colorAccent);
ArrayList<String> xVals = new ArrayList<String>();
xVals.add("1");
BarData data = new BarData(xVals, setTime);
barChart.setData(data);
barChart.setBackgroundColor(ContextCompat.getColor(rootView.getContext(),R.color.chartBackGround));
barChart.setDrawValueAboveBar(false);
barChart.setDrawGridBackground(false);
barChart.setDrawBarShadow(true);
barChart.setDescription("");
barChart.setVisibleYRangeMaximum(1.0f,barChart.getAxisLeft().getAxisDependency());
barChart.getLegend().setEnabled(false);
barChart.getXAxis().setEnabled(false);
barChart.getXAxis().setDrawLabels(false);
barChart.getAxisRight().setEnabled(false);
barChart.getAxisLeft().setEnabled(false);
barChart.getAxisLeft().setAxisMaxValue(1.0f);
barChart.getAxisLeft().setAxisMinValue(0);
barChart.getAxisLeft().setDrawLabels(false);
barChart.invalidate();
return rootView;
}
}
这是我的color.xml
<resources>
<color name="colorPrimary">#607d8b</color>
<color name="colorPrimaryDark">#455a64</color>
<color name="colorAccent">#64ffda</color>
<color name="windowBackground">#ffffff</color>
<color name="chartBackGround">#ffffff</color>
<color name="colorTransparent">#00ffffff</color>
谢谢你的帮助!!我真的无法在任何地方找到答案。
答案 0 :(得分:0)
尝试使用:
YAxis leftAxis = chart.getAxisLeft();
leftAxis.setAxisMaxValue(maxValue);
这应该给你一个固定的最大值。
如果您想摆脱标签,请尝试:
setDrawLabels(false)
此方法可应用于任一轴,具体取决于您要跳过的标签。
您需要的所有信息均可在documentation。
中找到编辑:用它来摆脱价值
setTime.setDrawValues(false);
在您的评论中,您还询问了如何更改数据集的颜色。为此,请使用:
setTime.setColor(Color.CYAN);