私はAndroid開発には新しく、私は自分自身を教えるためにチェスアプリに取り組んできました。しかし、私は今、立ち往生しています。ImageButtonをプログラムでグリッドに塗りつぶすにはどうすればよいですか?
- ボタンは、ボタンの間にはギャップが(ありません
- グリッド空間が均等にボタン
- 間に分散されたグリッド全体を埋める:基本的に、私はあるようImageButtonsの8x8のグリッドを描画するための良い方法が必要です明確に#2)
- グリッドは正方形で、そのサイズは制御できます(画面サイズに基づいて自動的にサイズを変更できます)。
それとも、簡単に言えば、それは標準のチェスボードのようになります:)私は成功しませんいくつかのレイアウトを試してみた
。
私は(ボードを描画する必要があります)PlayGameActivityの内側に、以下の方法でのGridLayoutを使用しています:
public void onStart(){
super.onStart();
board = (GridLayout)findViewById(R.id.chessboard);
board.setColumnCount(8);
board.setRowCount(8);
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
ImageButton square = squares[i][j] = new ImageButton(this);
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.rightMargin = 0;
params.topMargin = 0;
params.height = params.WRAP_CONTENT;
params.width = params.WRAP_CONTENT;
params.setGravity(Gravity.FILL);
params.rowSpec = GridLayout.spec(i);
params.columnSpec = GridLayout.spec(j);
board.addView(square, params);
//board.addView(square);
}
}}
現在、これは私が行うことができました最高です
そして、チェス盤は、このようなXMLで定義されています
<GridLayout
android:id="@+id/chessboard"
android:layout_width="353dp"
android:layout_height="353dp"
android:layout_marginBottom="104dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="104dp"
android:background="#000000"
android:gravity="center_horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintLeft_creator="1"
tools:layout_constraintRight_creator="1"
tools:layout_constraintTop_creator="1">
</GridLayout>
私はこの種の問題のために発見したすべてのソリューションは、Android XMLの形にされています。多分このようなアプローチに関する私の懸念は無知に基づくものですが、私は64の四角形をGridLayoutなどにコピーして貼り付けなければならないと理解しています。また、私はそのアプローチで画面サイズに基づいてどのようにサイズを変更するのか分かりません。理想的には、私は厳密にプログラム的な解決策を探しています(これは私の好みのUIデザインの方法です)。
プログラマチックなソリューションを動作させようと努力してきたことから、私はXMLソリューションを解決しようとしています。この場合、ボード内の四角形の数は変わらないので、他の解決策を追求する理由はそれほどありません。しかし、チェスボードでは、隣接するすべての正方形は反対の色です。私はあなたのメソッドでイメージボタンのグリッドを作る方法を見ていますが、あとで色を変える方法はありますか?つまり、色を変えるためにすべての行と行のすべての四角形にアクセスしますか? – TheRussianPatzer
私はちょうど私の推薦で私の答えを編集しました。上記を参照。 – windedmoose
私はついにXML版のソリューションを実装しました。私が元々思っていた解決策ではありませんが、実際にはかなりうまくいっています。 XMLは、あなたが提案したように断片化してしまった場合には、やってみると良いことです。ありがとうございます! – TheRussianPatzer