0

我有一个填充屏幕的 FrameLayout 和一个里面的 SurfaceView,它也填充了屏幕。然后我有3个不同宽度的按钮。我想将这些按钮垂直排列在屏幕的右边缘,均匀分布,使顶部按钮位于屏幕顶部,中间位于中间,底部位于底部 - 另外,我希望按钮垂直中心相互对齐。

伪布局:

<FrameLayout layout_width="match_parent" layout_height="match_parent">

    <SurfaceView layout_width="match_parent" layout_height="match_parent"></SurfaceView>

    <ToggleButton android:layout_width="45dp"></ToggleButton>
    <ToggleButton android:layout_width="67dp"></ToggleButton>
    <ToggleButton android:layout_width="100dp"></ToggleButton>

</FrameLayout>

非常感谢任何帮助,这是我正在努力实现的 ASCII 图片,希望对您有所帮助!

-------------------------------------------
|                                 (  )    |
|                                         |
|                                         |
|                                         |
|                               (      )  |
|                                         |
|                                         |
|                                         |
|                             (          )|
-------------------------------------------
4

3 回答 3

1

尝试这个

    <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <SurfaceView
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </SurfaceView>

        <RelativeLayout
            android:gravity="center_horizontal"
            android:layout_gravity="right"
            android:background="#f00"
            android:layout_width="100dp"
            android:layout_height="wrap_content" >

            <ToggleButton
                android:layout_width="45dp"
                  android:layout_centerHorizontal="true"
               android:layout_height="wrap_content" >
            </ToggleButton>

            <ToggleButton
                android:layout_width="67dp"
                android:layout_height="wrap_content"
               android:layout_centerHorizontal="true"
                android:layout_centerVertical="true" >
            </ToggleButton>

            <ToggleButton
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true" >
            </ToggleButton>
        </RelativeLayout>
    </FrameLayout>

</RelativeLayout>

附加的快照是输出在此处输入图像描述

于 2013-10-11T17:36:44.557 回答
1

尝试这个

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <SurfaceView
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </SurfaceView>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical" >

        <ToggleButton
            android:id="@+id/toggleFirst"
            android:layout_width="45dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true" >
        </ToggleButton>

        <ToggleButton
            android:id="@+id/toggleSecond"
            android:layout_width="67dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/toggleFirst" >
        </ToggleButton>

        <ToggleButton
            android:id="@+id/toggleThird"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/toggleSecond" >
        </ToggleButton>
    </RelativeLayout>
</FrameLayout>
于 2013-10-11T17:43:27.890 回答
0

您可以进行布局,然后在 java 代码中调用它时,只需根据屏幕宽度和按钮宽度排列按钮即可。将第一个按钮放在顶部,第二个按钮放在(screenheight/2-buttonheight/2),最后一个按钮放在(screenheight-buttonheight)。

注意:尝试根据屏幕大小而不是 dp 或 sp 来排列按钮,因为屏幕大小可能会有所不同,这会使整个事情变得混乱。

祝你好运

于 2013-10-11T17:37:29.430 回答