我正在尝试制作一个覆盖整个父布局的水平条形图,但不是。以下是我的代码 -
HorizontalBarChart barchart = new HorizontalBarChart(activity);
barchart.setLayoutParams(new LinearLayout.LayoutParams(0, 110, weight));
ArrayList<BarEntry> entries = new ArrayList<BarEntry>();
entries.add(new BarEntry(86.0f, 0));
BarDataSet dataset = new BarDataSet(entries, "");
dataset.setColor(Color.parseColor("#E0E0E0"));
ArrayList<String> labels = new ArrayList<String>();
labels.add("86.0");
BarData bardata = new BarData(labels, dataset);
barchart.setData(bardata);
barchart.setDescription("");
Legend legend = barchart.getLegend();
legend.setEnabled(false);
YAxis topAxis = barchart.getAxisLeft();
topAxis.setDrawLabels(false);
YAxis bottomAxis = barchart.getAxisRight();
bottomAxis.setDrawLabels(false);
XAxis rightAxis = barchart.getXAxis();
rightAxis.setDrawLabels(false);
bottomAxis.setDrawLabels(false);
barchart.setPadding(-1, -1, -1, -1);
barchart.setBackgroundColor(Color.CYAN);
return barchart;
我希望我的水平条形图(条形图)能够填满整个蓝色区域。有人可以帮忙。
编辑:@PhilippJahoda我尝试了你的解决方案,但是在第一次启动时它显示的方式与我一样,当我点击/触摸图表时,它只覆盖整个区域。你能否告诉我为什么我必须触摸图表才能填满整个空间。首次发布时,它看起来像 -
截屏:
点击后看起来像 -
屏幕截图2:
答案 0 :(得分:9)
答案 1 :(得分:5)
填充删除与
一起使用chart.setViewPortOffsets(0f, 0f, 0f, 0f);
但如果效果仅在触摸后出现,请尝试以这种方式使图表视图无效(在您设置数据后):
post(new Runnable() {
@Override
public void run() {
chartView.invalidate();
}
});
答案 2 :(得分:2)
YAxis yl = chart.getAxisLeft();
yl.setSpaceTop(20f);
答案 3 :(得分:1)
控制填充的最佳方法我认为:
将所有偏移设置为0
chart.setViewPortOffsets(0f,0f,0f,0f);
从XML
控制填充com.github.mikephil.charting.charts.LineChart 机器人:ID =&#34; @ + ID /图表&#34; 机器人:layout_width =&#34; match_parent&#34; 机器人:layout_height =&#34; 500dp&#34; 机器人:layout_marginTop =&#34; 10dp&#34; 机器人:layout_marginLeft =&#34; 10dp&#34; 机器人:layout_marginBottom =&#34; 10dp&#34;
答案 4 :(得分:0)
当你第一次设置你的 ViePortOffsets 和之后 moveViewTo 然后它工作。
Graph.setViewPortOffsets(0F,0F,0F,0F)
Graph.moveViewTo(0f,0f,YAxis.AxisDependency.RIGHT)
Graph.invalidate()