Как поместить 9 кнопок в 3 ряда в макете xroid?

Я пытаюсь сделать игру tic-tac-toe (версия для Android). Я хочу, чтобы все 9 кнопок были автоматически заданы по ширине и высоте устройства и равномерно помещали их в сетку 3 * 3. Но теперь я могу установить только их размеры. Может ли кто-нибудь сказать мне, как позволить им использовать высоту и ширину родителя и рассчитать их размеры?

Кроме того, im использует раскладку сетки сейчас. Это лучший макет, который я должен использовать для игры tic-tac-toe?

Благодарю.

Используйте LinearLayouts с android:weightSum и android:layout_weight

редактировать

Пример :

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="3" > <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:weightSum="3" > <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:weightSum="3" > <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal" android:weightSum="3" > <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> <ImageButton android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:src="@drawable/ic_launcher" /> </LinearLayout> </LinearLayout> 
 <LinearLayout android:weightSum = 1.0 > <LinearLayout android:weightSum=1.0 android:layout_weight = 0.33 android:orientation = horizontal > <Button android:layout_weight=0.33 /> <Button android:layout_weight=0.33 /> <Button android:layout_weight=0.33 /> </LinearLayout> //Similar to above LinearLayout of Buttons add 2 more LinearLayouts 

Попробуй это :

 <GridView android:id="@+id/grid_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:horizontalSpacing="10dp" android:numColumns="3" android:stretchMode="columnWidth" android:verticalSpacing="10dp" /> 

Вы можете использовать GridView. Он будет равномерно распределять кнопки.

 <GridView android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:horizontalSpacing="5dp" android:numColumns="3" android:stretchMode="columnWidth" android:verticalSpacing="5dp" />` 

В вашей деятельности используйте этот код

GridView gridView;

 static final String[] numbers = new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I"}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); gridView = (GridView) findViewById(R.id.gridview); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, numbers); gridView.setAdapter(adapter); gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Toast.makeText(getApplicationContext(), ((TextView) v).getText(), Toast.LENGTH_SHORT).show(); } }); } 

Я работаю над одной и той же проблемой и получил это, чтобы работать с табличным расположением. Надеюсь это поможет.

 <TableLayout android:id="@+id/tableLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/editText1" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:gravity="center" android:padding="40dp" > <TableRow android:id="@+id/tableRow1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" > <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> <Button style="@style/button_style" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" > <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" > <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> <Button android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" style="@style/button_style" /> </TableRow> </TableLayout> 

`