3

我对 Android 开发很陌生。我目前正在开发一个应用程序,我需要在屏幕上布局 4 个按钮。按钮 1 + 2 应该在第一行,3 + 4 在第二行。我希望每个按钮的高度和宽度相同。由于那里有多种屏幕尺寸,我希望按钮宽度为屏幕宽度的 40%。仅通过布局就可以做到这样的事情,还是我需要在代码中计算所有内容?

注意:我想将应用程序部署到运行 Android 2.2 或更高版本的设备上。

这是一个示例图形。 在此处输入图像描述

编辑:对于所有正在寻找方形东西的人。这是解决方案:http ://android-layouts.com/category/tags/square

4

3 回答 3

3

尝试这个

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >


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

    <Button
        android:id="@+id/button1"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>


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

    <Button
        android:id="@+id/button3"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>



</LinearLayout>

在此处输入图像描述

所以为了解决这个问题,你必须使用android:layout_weight="40/100"="0.4"
它,并且在它之前你必须设置android:layout_width为 0 。因为没有它就android:layout_weight="40/100"="0.4"不起作用。
更多关于 ``android:layout_weight` 的详细信息,请转到
android:layout_weight 是什么意思?

UPDATE 1

为按钮高度执行此任务,请尝试以下代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="0.6"
        android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>


    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="0px"
        android:layout_weight="0.4"
        android:orientation="horizontal" >

    <Button
        android:id="@+id/button3"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.4"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="0px"
        android:layout_height="fill_parent"
        android:layout_weight="0.6"
        android:text="Button" />

    </LinearLayout>



</LinearLayout>
于 2013-06-02T15:36:31.210 回答
3

正如Romain Guy在这个答案中指出的那样:

您不能使用百分比来定义相对布局中视图的尺寸。最好的方法是使用 LinearLayout 和权重,或自定义布局。

所以你要找的是 aLinearLayoutandroid:layout_weight属性。

以下代码将从您的屏幕截图创建布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="2" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="3" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="4" />
    </LinearLayout>

</LinearLayout>

结果:

在此处输入图像描述

于 2013-06-02T15:33:03.600 回答
0

我将开始将前两个按钮放在水平 LinearLayout 中,第二个 2 放在另一个水平 LinearLayout 中。然后为按钮添加填充以分隔它们。就 40% 而言,您可能可以使用 weight XML 属性。

于 2013-06-02T15:31:23.293 回答