Android:表格布局。在中间的行中对齐
Android: TableLayout. Align in the row at the middle
请参阅XML
<TableLayout
android:layout_weight="0"
android:background="@color/black"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp">
<TableRow android:orientation="horizontal" android:layout_weight="1" android:layout_height="wrap_content"></TableRow>
<TableRow
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_weight="1"
android:layout_height="wrap_content">
<ImageButton
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tmp0"
android:id="@+id/startButton">
</ImageButton></TableRow>
<TableRow android:layout_weight="1" android:layout_height="wrap_content" android:weightSum="3"></TableRow>
</TableLayout>
将ImageButton设置在第二行中间,漏掉或错误设置了哪些属性? (垂直和水平)
如何使行高和行宽相等?
我在 question/answers 基地搜索没有成功..
============================
更新:
要将 Button 放在中间,第二行应标记如下:
<TableRow
**android:gravity="center"**
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3">
<ImageButton
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tmp0"
android:id="@+id/startButton">
</ImageButton>
</TableRow>
请看看发生了什么,这当然是不正确的:
但是如何让行高相等还是不懂。
第二行现在的格式如下,但在 Designer 中与第二张图片相同
<TableRow
android:gravity="center"
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_weight="1"
android:weightSum="3">
<ImageButton
android:layout_gravity="center"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tmp0"
android:id="@+id/startButton">
</ImageButton>
</TableRow>
如果我没记错的话第二行需要android:layout_width="match_parent"
更新
我认为 TableRow 不可能在整个屏幕上固定垂直,每行的高度都相同,除非您使所有 TableRow 都相同。这就是 TableLayout 和 TableRow behaves.See 这个:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*">
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
</TableLayout>
</LinearLayout>
这将在垂直方向上等分你的行。
现在就这样做:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*">
<TableRow
android:layout_weight="1"
android:gravity="center">
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
</TableRow>
</TableLayout>
</LinearLayout>
它会给第二行更多的权重。
旧
给你。
需要在第二行设置 android:gravity="center"
<?xml version=<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_weight="0"
android:background="@color/colorPrimary">
<TableRow
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"></TableRow>
<TableRow
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/ic_launcher"></ImageButton>
</TableRow>
<TableRow
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3"></TableRow>
</TableLayout>
请参阅XML
<TableLayout
android:layout_weight="0"
android:background="@color/black"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp">
<TableRow android:orientation="horizontal" android:layout_weight="1" android:layout_height="wrap_content"></TableRow>
<TableRow
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_weight="1"
android:layout_height="wrap_content">
<ImageButton
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tmp0"
android:id="@+id/startButton">
</ImageButton></TableRow>
<TableRow android:layout_weight="1" android:layout_height="wrap_content" android:weightSum="3"></TableRow>
</TableLayout>
将ImageButton设置在第二行中间,漏掉或错误设置了哪些属性? (垂直和水平)
如何使行高和行宽相等?
我在 question/answers 基地搜索没有成功..
============================
更新:
要将 Button 放在中间,第二行应标记如下:
<TableRow **android:gravity="center"** android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:weightSum="3"> <ImageButton android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/tmp0" android:id="@+id/startButton"> </ImageButton> </TableRow>
请看看发生了什么,这当然是不正确的:
但是如何让行高相等还是不懂。
第二行现在的格式如下,但在 Designer 中与第二张图片相同
<TableRow
android:gravity="center"
android:layout_gravity="center"
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_weight="1"
android:weightSum="3">
<ImageButton
android:layout_gravity="center"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tmp0"
android:id="@+id/startButton">
</ImageButton>
</TableRow>
如果我没记错的话第二行需要android:layout_width="match_parent"
更新
我认为 TableRow 不可能在整个屏幕上固定垂直,每行的高度都相同,除非您使所有 TableRow 都相同。这就是 TableLayout 和 TableRow behaves.See 这个:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*">
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
</TableLayout>
</LinearLayout>
这将在垂直方向上等分你的行。
现在就这样做:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*">
<TableRow
android:layout_weight="1"
android:gravity="center">
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
<Button
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="Button" />
</TableRow>
<TableRow
android:layout_weight="1"
android:gravity="center">
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
<!--<Button-->
<!--android:layout_width="fill_parent"-->
<!--android:layout_height="fill_parent"-->
<!--android:text="Button" />-->
</TableRow>
</TableLayout>
</LinearLayout>
它会给第二行更多的权重。
旧
给你。
需要在第二行设置 android:gravity="center"
<?xml version=<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_weight="0"
android:background="@color/colorPrimary">
<TableRow
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal"></TableRow>
<TableRow
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/ic_launcher"></ImageButton>
</TableRow>
<TableRow
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="3"></TableRow>
</TableLayout>