0

我有四个按钮紧紧地在一起形成一个正方形,我正在努力弄清楚如何将一个按钮放在四个按钮上,在中间,所以它基本上与它们重叠。这是我当前的四个按钮布局:

<TableRow android:layout_weight="0.2" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|center"
        android:layout_span="2"
        android:gravity="center"
        android:text="TextView"
        android:textColor="#357ae8"
        android:textSize="20dp"
        android:textStyle="bold" />
</TableRow>

<TableRow
    android:layout_gravity="center_horizontal"
    android:layout_weight="1" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_marginBottom="-7dp"
        android:layout_marginLeft="5dp"
        android:layout_weight="1"
        android:background="@drawable/b1tl"
        android:gravity="center_horizontal" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_marginBottom="-7dp"
        android:layout_marginRight="5dp"
        android:layout_weight="1"
        android:background="@drawable/b2tr"
        android:gravity="center_horizontal" />
</TableRow>

<TableRow
    android:layout_margin="0dp"
    android:layout_weight="1" >

    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="-7dp"
        android:layout_weight="1"
        android:background="@drawable/b3bl"
        android:gravity="center_horizontal" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_marginRight="5dp"
        android:layout_marginTop="-7dp"
        android:layout_weight="1"
        android:background="@drawable/b4br"
        android:gravity="center_horizontal" />
</TableRow>

<TableRow
    android:layout_margin="10dp"
    android:layout_weight="0.1" >

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text="Lives"
        android:textColor="#357ae8" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text="Score"
        android:textColor="#357ae8" />
</TableRow>

<TableRow
    android:layout_margin="10dp"
    android:layout_weight="0.1" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text=""
        android:textColor="#357ae8" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text=""
        android:textColor="#357ae8" />
</TableRow>

</TableLayout>

我在想我可以使用相对布局并尝试对按钮进行硬编码,使其位于按钮正方形的中心,但是一旦我尝试这样做,它就会影响表格布局。甚至有可能在 Android 布局中做这种事情吗?

4

2 回答 2

2

嗨,可以使用 FrameLayout。这是完整的代码,其中一个按钮位于连续两个按钮之间的中央。同样,您可以解决在所有四个按钮中居中放置一个按钮的问题。我是这样做的:在表格行中> A FrameLayout。FrameLayout里面有一个LinearLayout和一个Button作为Child让他们both can overlap(framelayout的属性)。通过这样做,我们在 LinearLayout 中放置的任何内容也将与上一个按钮分层。


请检查此代码。我认为这就是你想要的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

<TableRow
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="0.2" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|center"
        android:layout_span="2"
        android:gravity="center"
        android:text="TextView"
        android:textColor="#357ae8"
        android:textSize="20dp"
        android:textStyle="bold" />
</TableRow>

<TableRow
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_horizontal"
    android:layout_weight="1" >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="horizontal"
                android:layout_weight="1" >

                <Button
                    android:id="@+id/button1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="-7dp"
                    android:layout_marginLeft="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/ic_launcher"
                    android:gravity="center_horizontal" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="-7dp"
                    android:layout_marginRight="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/ic_launcher"
                    android:gravity="center_horizontal" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="horizontal"
                android:layout_weight="1" >

                <Button
                    android:id="@+id/button1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="-7dp"
                    android:layout_marginLeft="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/ic_launcher"
                    android:gravity="center_horizontal" />

                <Button
                    android:id="@+id/button2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_marginBottom="-7dp"
                    android:layout_marginRight="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/ic_launcher"
                    android:gravity="center_horizontal" />
            </LinearLayout>

        </LinearLayout>



        <Button
            android:id="@+id/button5"
            android:layout_width="wrap_content"
            android:layout_height="150dp"
            android:layout_gravity="center"
            android:text="Center Button" />

    </FrameLayout>

</TableRow>


<TableRow
    android:layout_margin="10dp"
    android:layout_weight="0.1" >

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text="Lives"
        android:textColor="#357ae8" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text="Score"
        android:textColor="#357ae8" />
</TableRow>

<TableRow
    android:layout_margin="10dp"
    android:layout_weight="0.1" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text=""
        android:textColor="#357ae8" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_column="0"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:text=""
        android:textColor="#357ae8" />
</TableRow>

</TableLayout>

</RelativeLayout>
于 2013-05-12T09:27:48.787 回答
1

我可能会遗漏一些东西,但是...

如果你把你当前的布局放在 aRelativeLayout里面,将它与顶部、底部、左侧和右侧对齐怎么办。

确认没有任何变化,它仍然可以正常工作。

然后在 this 中放置一个按钮RelativeLayout,并将其对齐到 this 中的中心RelativeLayout

我没有方便的 Eclipse 来检查这个,但它应该很简单,不是吗?


即非常像@durgomgiri 在他的回答中所说的。

于 2013-05-21T12:50:26.140 回答