我试图制作一个井字游戏(Android版)。 我想让所有9个按钮自动调整大小,关于设备的宽度和高度,并将它们均匀地放在3 * 3网格中。但我现在只能为他们的尺码设定数字。 有人能告诉我如何让他们使用父母的身高和宽度来计算他们的身材吗?
另外,我现在使用网格布局。这是我应该用于tic-tac-toe游戏的最佳布局吗?
感谢。
答案 0 :(得分:9)
将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>
答案 1 :(得分:1)
您可以使用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();
}
});
}
答案 2 :(得分:1)
<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
答案 3 :(得分:1)
我正在处理完全相同的问题,并使用表格布局。希望这会有所帮助。
<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>
`
答案 4 :(得分:0)
试试这个:
<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" />