8

我有一个带开关的布局。我希望文本位于左侧,实际开关位于右侧。我该怎么做?我知道这是可能的,因为它们在手机设置中是这样的。

现在的情况:

在此处输入图像描述

<?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:layout_margin="15dp"
android:dividerPadding="5dp"
android:orientation="vertical"
android:padding="15dp"
android:scrollbars="vertical"
android:showDividers="middle" >

<Switch
     android:paddingBottom="15dp"
    android:id="@+id/switch_gprs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:checked="false"
    android:gravity="center_vertical|fill|end"
    android:text="@string/gprs" />

<View
android:paddingTop="15dp"
 android:paddingBottom="15dp"
android:layout_height="1dp"
android:layout_width="match_parent"
android:background="@color/holo_black" />

<Switch
    android:paddingTop="15dp"
     android:paddingBottom="15dp"
    android:id="@+id/switch_voicemail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/voicemail" />

<RelativeLayout
    android:paddingTop="15dp"
     android:paddingBottom="15dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/number" />

    <TextView
        android:id="@+id/voicemail_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

</RelativeLayout>

<RelativeLayout
    android:paddingTop="15dp"
     android:paddingBottom="15dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/email" />

    <TextView
        android:id="@+id/voicemail_email"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

</RelativeLayout>

<TextView
    android:paddingTop="15dp"
    android:paddingBottom="15dp"
    android:id="@+id/textView4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/voicemail_download" />

 <View
android:paddingTop="15dp"
 android:paddingBottom="15dp"
android:layout_height="1dp"
android:layout_width="match_parent"
android:background="@color/holo_black" />

<Switch
    android:paddingTop="15dp"
     android:paddingBottom="15dp"
    android:id="@+id/switch1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/redirect" />

<RelativeLayout
    android:paddingTop="15dp"
     android:paddingBottom="15dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/sim_number" />

    <TextView
        android:id="@+id/redirect_sim"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

</RelativeLayout>

<RelativeLayout
    android:paddingTop="15dp"
     android:paddingBottom="15dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/redirect_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/redirect_number" />

</RelativeLayout>

4

5 回答 5

36

只需将宽度设置为match_parent

<Switch
    android:paddingBottom="15dp"
    android:id="@+id/switch_gprs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:checked=false
    android:text="@string/gprs" />
于 2013-09-05T08:12:12.937 回答
2

您可以设置添加这些以在 xml 中切换

android:layout_width="match_parent"
android:gravity="right|center"

如果它不起作用,您可以将开关放入相对布局(相对布局的宽度为 match_parent)并将此行添加到开关。

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

    <Switch 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true" />

</RelativeLayout>
于 2013-09-05T08:13:10.533 回答
1

版本 27 的工作方式如下:

<Switch
    android:id="@+id/enable_disable"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="On/Off" />
于 2018-03-14T18:18:51.850 回答
0

使用线性布局并在 TextView 和 Switch 之间放置间距。像这样的东西:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/mexican"
        android:id="@+id/textView" />
    <Space
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1" >
    </Space>
    <Switch
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/switch1"
        android:gravity="center"
       />

</LinearLayout>
于 2017-07-04T14:57:25.353 回答
0

被一个 LinearLayout 包围,它位于具有 alignparentRight 和 centerVertical 的 RelativeLayout 内。无论交换机的父级如何,这都有效。

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

        <!--Your stuff in left side..-->


    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        >
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:id="@+id/selectAppSwitch"
        />
    </LinearLayout>
</RelativeLayout>
于 2017-02-09T15:21:02.973 回答