android LinearLayout中,三个按钮靠左,一个按钮靠右

  1. 使用LinearLayoutlayout_weight实现(水平方向)
    • XML 布局文件方式
      • 首先将LinearLayoutorientation设置为horizontal,表示水平布局。对于左边的三个按钮,它们的layout_width可以设置为0dp,并分配适当的layout_weight。右边的一个按钮也设置layout_width0dp,并设置合适的layout_weight,使其靠右。
      • 示例代码如下:
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/left_button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="左1"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/left_button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="左2"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/left_button3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="左3"
        android:layout_weight="1"/>

    <Button
        android:id="@+id/right_button"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="右"
        android:layout_weight="1"/>
</LinearLayout>

  • 在这里,四个按钮的layout_weight都设置为1,这样它们会平分LinearLayout的水平空间。如果希望左边三个按钮占据的空间总和是右边按钮的两倍,可以将左边三个按钮的layout_weight设置为2,右边按钮的layout_weight设置为1
  • 代码动态设置方式
    • ActivityonCreate方法中获取LinearLayout和四个按钮的实例,然后设置它们的布局参数。
    • 示例代码如下:
public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout linearLayout = findViewById(R.id.linearLayout);
        Button leftButton1 = findViewById(R.id.left_button1);
        Button leftButton2 = findViewById(R.id.left_button2);
        Button leftButton3 = findViewById(R.id.left_button3);
        Button rightButton = findViewById(R.id.right_button);

        // 设置LinearLayout为水平方向布局
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);

        // 设置左边三个按钮的布局参数
        LinearLayout.LayoutParams leftParams = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT);
        leftParams.weight = 1;
        leftButton1.setLayoutParams(leftParams);
        leftButton2.setLayoutParams(leftParams);
        leftButton3.setLayoutParams(leftParams);

        // 设置右边按钮的布局参数
        LinearLayout.LayoutParams rightParams = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT);
        rightParams.weight = 1;
        rightButton.setLayoutParams(rightParams);
    }
}

  1. 结合LinearLayoutRelativeLayout实现(水平方向)
    • XML 布局文件方式
      • 可以将LinearLayout作为外层布局,内部嵌套一个RelativeLayout来实现。LinearLayoutorientation设置为horizontal。在RelativeLayout中放置四个按钮,通过RelativeLayout的规则来定位按钮。
      • 示例代码如下:
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

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

        <Button
            android:id="@+id/left_button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="左1"
            android:layout_alignParentLeft="true"/>

        <Button
            android:id="@+id/left_button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="左2"
            android:layout_toRightOf="@id/left_button1"/>

        <Button
            android:id="@+id/left_button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="左3"
            android:layout_toRightOf="@id/left_button2"/>

        <Button
            android:id="@+id/right_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="右"
            android:layout_alignParentRight="true"/>
    </RelativeLayout>
</LinearLayout>

  • RelativeLayout中,通过layout_alignParentLeftlayout_alignParentRight属性将按钮分别靠左和靠右放置,中间的按钮通过layout_toRightOf属性依次排列。
  • 代码动态设置方式(较复杂)
    • 首先在ActivityonCreate方法中获取LinearLayout和四个按钮的实例。然后,通过代码设置RelativeLayout的布局参数和按钮之间的相对位置。
    • 示例代码如下:
public class MainActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout linearLayout = findViewById(R.id.linearLayout);
        Button leftButton1 = findViewById(R.id.left_button1);
        Button leftButton2 = findViewById(R.id.left_button2);
        Button leftButton3 = findViewById(R.id.left_button3);
        Button rightButton = findViewById(R.id.right_button);

        // 设置LinearLayout为水平方向布局
        linearLayout.setOrientation(LinearLayout.HORIZONTAL);

        // 创建并设置RelativeLayout的布局参数
        RelativeLayout relativeLayout = new RelativeLayout(this);
        RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        linearLayout.addView(relativeLayout, relativeLayoutParams);

        // 设置左边第一个按钮的布局参数
        RelativeLayout.LayoutParams left1Params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        left1Params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
        leftButton1.setLayoutParams(left1Params);
        relativeLayout.addView(leftButton1);

        // 设置左边第二个按钮的布局参数
        RelativeLayout.LayoutParams left2Params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        left2Params.addRule(RelativeLayout.RIGHT_OF, leftButton1.getId());
        leftButton2.setLayoutParams(left2Params);
        relativeLayout.addView(leftButton2);

        // 设置左边第三个按钮的布局参数
        RelativeLayout.LayoutParams left3Params = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        left3Params.addRule(RelativeLayout.RIGHT_OF, leftButton2.getId());
        leftButton3.setLayoutParams(left3Params);
        relativeLayout.addView(leftButton3);

        // 设置右边按钮的布局参数
        RelativeLayout.LayoutParams rightParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT
        );
        rightParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
        rightButton.setLayoutParams(rightParams);
        relativeLayout.addView(rightButton);
    }
}

  • 这种方式通过代码创建RelativeLayout和设置按钮的相对位置规则,实现了三个按钮靠左,一个按钮靠右的布局。不过这种方式代码相对复杂,在实际应用中,根据具体情况选择合适的布局方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码熊崽的编程森林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值