【发布时间】:2016-11-14 16:04:37
【问题描述】:
我需要动态计算我正在绘制的图表中条形的宽度。
最小宽度为 4 像素,最大为 50 像素。
如何计算宽度,以便即使我需要更多条形,它们也会动态设置宽度并适合屏幕?
现在所有的硬编码都是 4 或 50 像素,所以如果您能提出建议,我将不胜感激。
提前致谢!
编辑 1
public void drawBars(int numberOfRates) {
this.removeAllViews();
final ViewGroup nullParent = null;
this.addView(mInflater.inflate(R.layout.layout_bar_diagram, nullParent));
LinearLayout parentView = (LinearLayout) findViewById(R.id.parentView);
int width, height, horizontalMargin, verticalMargin, textBottomMargin;
verticalMargin = calculateDpi(16);
if (((numberOfRates * calculateDpi(50)) + (numberOfRates * calculateDpi(5))) < displayMetrics.widthPixels) {
width = calculateDpi(50);
horizontalMargin = calculateDpi(5);
} else {
width = 0;
horizontalMargin = 0;
}
for (int i = 0; i < numberOfRates; i++) {
if (i == 0) {
textBottomMargin = 0;
height = calculateDpi(50);
} else if (i == (numberOfRates - 1)) {
textBottomMargin = calculateDpi(16);
height = calculateDpi(150);
} else {
textBottomMargin = calculateDpi(16);
height = calculateDpi(100);
}
TextBarView textBarView = new TextBarView(getContext());
textBarView.drawBar(i + 1,
width,
height,
horizontalMargin,
verticalMargin,
textBottomMargin);
parentView.addView(textBarView);
}
invalidate();
}
【问题讨论】:
-
你现在如何为你的小部件充气?
-
@VladislavSazanovich 我通过调用 parent.addView(BarView) 绘制 CustomBarViews 并将宽度传递给 LayoutParams 但现在是硬编码。我需要根据要绘制的条数以某种方式计算条的宽度。
-
@VladislavSazanovich 我刚刚将我用于绘图的代码作为编辑添加到问题中,如果你可以看看的话。
标签: java android dynamic view width