所以我希望在tic tac toe布局中有6个按钮,我正在使用嵌套的线性布局。
这是布局的xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:gravity="center"
tools:context=".TicTacToeMainActivity$PlaceholderFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/title"
android:id="@+id/title"
android:textSize="20dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/topright"
android:onClick="right_click" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/topcenter"
android:onClick="right_click" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/topleft"
android:onClick="right_click" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/midright"
android:onClick="right_click" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/midcenter"
android:onClick="right_click" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/midleft"
android:onClick="right_click" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/lowright"
android:onClick="right_click" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/lowcenter"
android:onClick="right_click" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_weight="1"
android:id="@+id/lowleft"
android:onClick="right_click" />
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/reset"
android:id="@+id/reset"
android:onClick="right_click" />
</LinearLayout>
然而,这会呈现以下屏幕:
如何让按钮调整大小,以便每行占用的空间与其他行相同,没有任何边距,如此截图中所示?同时忽略按钮中引用的方法,因为它们不是。
答案 0 :(得分:2)
您需要进行两项更改
1。如果您将weight
提交给LinearLayout
,请写下layout_height="0dp"
2。按钮的高度必须为match_parent
所以你的布局看起来像,
<LinearLayout>
<TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp" //see the change here
android:layout_weight="1"
android:orientation="horizontal">
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent" //change height to match_parent
android:text=""
android:layout_weight="1"
android:id="@+id/topright"
android:onClick="right_click" />
//do same changes to rest two buttons within this LinearLayout
.
.
</LinearLayout>
<LinearLayout> //make same changes here
<Button/> //and here also
<Button/> //here also
<Button/> //here also
</LinearrLayout>
<LinearLayout> //make same changes here
<Button/> //and here also
<Button/> //here also
<Button/> //here also
</LinearrLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="reset"
android:id="@+id/reset"
android:onClick="right_click" />
</LinearLayout>
答案 1 :(得分:1)
用wrap_content
替换9 Button
的{{1}}的所有实例。然后,为了补偿标题和底部按钮占用的间距,将3个水平方向match_parent
s的高度更改为0dp。他们的布局重量为&#34; 1&#34;在标题和底部按钮布局后,应该使它们填满可用空间的三分之一。
在您的情况下,当您使用LinearLayout
按钮时,按钮的大小应使其高度足以包含其中的文本。使用wrap_content
会展开每个按钮(以及每个内部match_parent
)以填充所有可用空间。