私は8x8ボタンでチェスゲームボードを作成しようとしています。私はネストされたLinearLayoutsを使用しています。問題は、私が取り除くことができないImageViewの各行の間にパディングがあることです。これは私がSOFAR持っているもの、ボードは正方形であるべきではなく、次のとおりです。アンドロイド:直線レイアウトからパディングを削除して正方形のレイアウトを作成する
public class BoardLayout extends LinearLayout {
public BoardLayout(Context context) {
super(context);
LinearLayout.LayoutParams parms = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
setLayoutParams(parms);
setOrientation(LinearLayout.VERTICAL);
setPadding(0, 0, 0, 0);
for (int i = 0; i < 8; i++) {
LinearLayout row = new LinearLayout(context);
row.setLayoutParams(parms);
row.setOrientation(LinearLayout.HORIZONTAL);
row.setPadding(0, 0, 0, 0);
for (int j = 0; j < 8; j++) {
ImageView button = new ImageView(context);
button.setLayoutParams(parms);
button.setImageResource(R.drawable.icon);
button.setAdjustViewBounds(true);
button.setPadding(0, 0, 0, 0);
row.addView(button);
}
addView(row);
}
setSquare();
}
public void setSquare() {
int size = Math.min(getWidth(), getHeight());
// setHeight(size); // Not Function, but this is what I need
// setWidth(size); // Not Function, but this is what I need
// also doesn't work
setLayoutParams(new LinearLayout.LayoutParams(size, size, 1.0f));
}
}
ソリューション:
としては、TableLayoutは、私は「何のために優れている提案私はやっています。そのため、メインクラスをTableLayoutに、ネストしたLinearLayoutsをTableRowに変更する必要があります。
setShrinkAllColumns(true);
setStretchAllColumns(true);
をし、挿入された各項目について、私はまた、呼び出す必要がありました:
しかし、一人でそれを修正しなかったことを、私はまた、TableLayoutに次のように呼び出す必要がありました
setAdjustViewBounds(true);