プログラムでHorizonatal linearlayoutにボタンを追加しましたが、レイアウトの前にこのボタンの幅を知りたいです。
これは、ボタンの合計幅が LinearLayout の幅を超えている場合、アプリは古い LinearLayout の下に新しい LinearLayout を作成するためです。
ボタンには 1 バイト文字とマルチバイト文字があります。
したがって、ボタンが1バイト文字のみの場合のボタン幅の場合と、マルチバイト文字のみの場合のボタン幅の場合では、ボタン幅が異なります。
public void draw() {
width = 320;//screen width
Button btn;
int i;
int twidth = 0;
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
lparams.setMargins(0, 5, 0, 5);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
buttonParams.setMargins(5, 0, 5, 0);
for (i = -1; +i < size(); i++) {
LinearLayout layout2 = new LinearLayout(context);
layout2.setOrientation(LinearLayout.HORIZONTAL);
addView(layout2, lparams);
twidth = 0;
while (twidth < width && i + 1 < size()) {
btn = new Button(context);
btn.setText(element.get(i + 1).tagName);
btn.setTextColor(Color.BLACK);
btn.setBackgroundColor(Color.WHITE);
btn.setMaxLines(1);
btn.setLayoutParams(buttonParams);
twidth += btn.getTextSize() * btn.length() + 10;
if (twidth >= width) {
i--;
break;
} else {
btn.setPadding(5, 0, 5, 0);
btn.setClickable(true);
btn.setId(element.get(i + 1).tagId);
layout2.addView(btn, buttonParams);
i++;
}
}
}
}
解決策はありますか?