垂直居中两个开关

时间:2014-12-26 12:17:48

标签: android android-layout android-switch

我希望将两个开关集中在一起,就像我对textviews一样,但我已经尝试了所有可能的选项而没有成功。

这是代码的简要版本:

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

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

        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="NOTIFICATIONS" />

        <TextView [...] />
    </LinearLayout>

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

        <Switch
            android:id="@+id/swnotif"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_weight="1" />

        <Switch [...] />

    </LinearLayout>

</LinearLayout>

Screenshot

4 个答案:

答案 0 :(得分:2)

问题是,gravity属性似乎不会影响Switch次观看,就像文字和其他观看一样。解决方法是将每个开关包装在RelativeLayout中,如下所示:

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

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

答案 1 :(得分:1)

尝试我测试

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

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

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="NOTIFICATIONS" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="MUTE" />
    </LinearLayout>

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

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Switch
                android:id="@+id/swnotif"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal" />
        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Switch
                android:id="@+id/swnotif1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal" />
        </FrameLayout>
    </LinearLayout>
</LinearLayout>

答案 2 :(得分:0)

这里是兄弟,

我左右调整边距。

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


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="2">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"
            android:textSize="30sp"
            android:gravity="center"
            android:layout_weight="1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"
            android:gravity="center"
            android:layout_weight="1"
            android:textSize="30sp"/>
        </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="2">
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="false"
            android:text="New"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:layout_weight="1"
            />
        <Switch
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="false"
            android:text="New"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="40dp"
            android:layout_weight="1"/>
    </LinearLayout>
</LinearLayout>

希望这可以提供帮助

答案 3 :(得分:0)

将center_vertical gravity设置为TextView并切换父级LinearLayout:

android:gravity="center_vertical"