【问题标题】:How to remove padding from horizontal barchart of mpandroidchart?如何从 mpandroidchart 的水平条形图中删除填充?
【发布时间】:2015-07-01 04:38:08
【问题描述】:

我正在尝试制作一个覆盖整个父布局的水平条形图,但事实并非如此。下面是我的代码 -

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:

【问题讨论】:

    标签: android bar-chart mpandroidchart


    【解决方案1】:

    如果您还没有更新到最新版本的库。 然后,只需从图表中删除所有偏移量。它在documentation

    呼叫:

    chart.setViewPortOffsets(0f, 0f, 0f, 0f);
    

    【讨论】:

    • 我遇到了同样的问题。我在设置图表数据后调用 chart.setViewPortOffset(100f, 0f, 100f, 0f) .. 但我的编辑只有在我点击图表后才会生效。任何解决方案@PhilippJahoda?我有最新的 mpchart lib 版本。
    • 饼图没有方法 setViewPortOffsets
    • @SANAT 尝试使用负值的 setExtraOffsets
    • 由于某种原因,setViewPortOffsets(0f, 0f, 0f, 0f) 在 API 中不起作用
    • setViewPortOffsets(0f, 0f, 0f, 0f) 只有在全为零时才能正常工作。如果您尝试使用 setViewPortOffsets(0f, 0f, 0f, 10f) 之类的方法,则在与图表交互之前它不会起作用。即使你调用了 invalidate()。
    【解决方案2】:

    填充删除适用于

    chart.setViewPortOffsets(0f, 0f, 0f, 0f);
    

    但如果效果仅在触摸后出现,请尝试通过这种方式使图表视图(设置数据后)无效:

    post(new Runnable() {
        @Override
        public void run() {
            chartView.invalidate();
        }
    });
    

    【讨论】:

      【解决方案3】:
          YAxis yl = chart.getAxisLeft();
          yl.setSpaceTop(20f);
      

      【讨论】:

        【解决方案4】:

        控制填充的最佳方法是:

        1. 将所有偏移量设置为0

          chart.setViewPortOffsets(0f, 0f, 0f, 0f);

        2. 从 XML 控制填充

          com.github.mikephil.charting.charts.LineChart android:id="@+id/图表" android:layout_width="match_parent" android:layout_height="500dp" android:layout_marginTop="10dp" android:layout_marginLeft="10dp" android:layout_marginBottom="10dp"

        【讨论】:

          【解决方案5】:

          当您第一次设置 ViePortOffsets 并在 moveViewTo 之后它会起作用。

          Graph.setViewPortOffsets(0F,0F,0F,0F)
          Graph.moveViewTo(0f,0f,YAxis.AxisDependency.RIGHT)
          Graph.invalidate()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-01-05
            • 2017-03-24
            • 1970-01-01
            • 1970-01-01
            • 2017-03-09
            • 2020-09-11
            相关资源
            最近更新 更多