私が描いている図のバーの幅を動的に計算する必要があります。常に画面に収まるようにビューの幅を計算する
最小幅は4ピクセル、最大値は50ピクセルです。
どのようにして幅を計算すると、バーがさらに必要な場合でも、動的に幅を設定して画面に収まるようにしますか?
今はすべてが4または50ピクセルになるようにハードコードされています。何かを提案できれば感謝しています。
ありがとうございます!
EDIT 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に幅を渡しますが、これは現在HardCodedです。どのくらいバーを描画したいのかに応じてバーの幅を計算する必要があります。 – drilonreqica
@ VladislavSazanovich私はあなたが一見することができる場合、私は質問にEDITとして描画のために使用するコードを追加しました。 – drilonreqica