相对布局在运行时紊乱

时间:2016-08-29 18:27:49

标签: android android-layout android-fragments android-relativelayout

我的应用中存在相对布局问题。问题只出现在一个活动和一个片段中,尽管我在20多个其他活动和片段中使用了类似的布局。在我的xml设计中,布局显示如下。

enter image description here

然而,在运行时,布局设计搞砸了。以下是运行时布局的屏幕截图。 enter image description here

为什么我遇到这个问题? 这是我的布局。

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

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/moments_toolbar_background"
        android:minHeight="?attr/actionBarSize">

        <include layout="@layout/toolbar_ollamoments_comment" />

    </android.support.v7.widget.Toolbar>

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

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

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp"
                android:gravity="left">

                <ImageView
                    android:id="@+id/settingsImageViewAccount"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_settings_moments_private"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:id="@+id/accountSettingsTextViewEditUsername"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Make profile private"
                    android:layout_marginLeft="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewAccount"
                    android:layout_toLeftOf="@+id/momentSettingsSwitchProfilePrivacy"
                    android:layout_toStartOf="@+id/momentSettingsSwitchProfilePrivacy" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchProfilePrivacy"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewPhoneNumber"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_settings_moments_message"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Show my phone number on my public profile"
                    android:layout_marginLeft="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewPhoneNumber"/>
<!--
                android:layout_toLeftOf="@+id/momentSettingsSwitchMessages"
                android:layout_toStartOf="@+id/momentSettingsSwitchMessages"-->

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchPhoneNumber"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewChats"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_settings_moments_message"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Allow people to message me"
                    android:layout_marginLeft="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewChats"
                    android:layout_toLeftOf="@+id/momentSettingsSwitchMessages"
                    android:layout_toStartOf="@+id/momentSettingsSwitchMessages" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchMessages"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewMoments"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_group"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Allow moments to be discoverable for trending"
                    android:layout_marginLeft="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewMoments"
                    android:layout_marginRight="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_toLeftOf="@+id/momentSettingsSwitchDiscoverable"
                    android:layout_toStartOf="@+id/momentSettingsSwitchDiscoverable" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchDiscoverable"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewSupport"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_settings_moments_tagged"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Hide photos I'm tagged in"
                    android:layout_marginLeft="5dp"
                    android:layout_marginEnd="5dp"
                    android:layout_marginRight="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewSupport"
                    android:layout_toLeftOf="@+id/momentSettingsSwitchHidePhotos"
                    android:layout_toStartOf="@+id/momentSettingsSwitchHidePhotos" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchHidePhotos"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewNotifications"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_settings_moments_location"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Show my location"
                    android:layout_marginLeft="5dp"
                    android:layout_marginStart="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewNotifications"
                    android:layout_toLeftOf="@+id/momentSettingsSwitchLocation"
                    android:layout_toStartOf="@+id/momentSettingsSwitchLocation" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchLocation"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewBlock"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_group"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Block users"
                    android:layout_marginLeft="5dp"
                    android:layout_marginStart="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewBlock" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="70dp">

                <ImageView
                    android:id="@+id/settingsImageViewReccomendations"
                    android:layout_width="16dp"
                    android:layout_height="16dp"
                    android:layout_marginLeft="20dp"
                    android:layout_marginStart="20dp"
                    android:layout_marginEnd="20dp"
                    android:layout_marginRight="20dp"
                    android:src="@mipmap/ic_olla_group"
                    android:layout_centerVertical="true"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"/>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="Recommend people to follow"
                    android:layout_marginLeft="5dp"
                    android:layout_marginStart="5dp"
                    android:layout_marginRight="5dp"
                    android:layout_marginEnd="5dp"
                    android:textSize="@dimen/text_size_medium"
                    android:textColor="@color/settingsMoodTextColor"
                    android:layout_toRightOf="@+id/settingsImageViewReccomendations"
                    android:layout_toLeftOf="@+id/momentSettingsSwitchRecommend"
                    android:layout_toStartOf="@+id/momentSettingsSwitchRecommend" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/momentSettingsSwitchRecommend"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="15dp"
                    android:layout_centerVertical="true"
                    android:theme="@style/CustomSwitch"
                    android:checked="true" />

                <View
                    android:layout_width="wrap_content"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:background="@color/ollamoments_options_divider_color"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:layout_marginEnd="15dp"
                    android:layout_marginStart="15dp"/>

            </RelativeLayout>

        </LinearLayout>

    </ScrollView>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

您无法将TextView对齐ImageView右侧和Switch的左侧。您只能将其与其中一个视图对齐。您的预览会将其显示为左对齐,但手机会将其显示为右对齐。

我的建议是将文本与ImageView对齐,并将TextView右侧的边距大致添加到Switch的大小。

<TextView
    android:id="@+id/accountSettingsTextViewEditUsername"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:text="Make profile private"
    android:layout_marginLeft="5dp"
    android:textSize="@dimen/text_size_medium"
    android:textColor="@color/settingsMoodTextColor"
    android:layout_toRightOf="@+id/settingsImageViewAccount"
    android:layout_marginRight="48dp" />

试一试。如果发现文本在Switch中运行,则可能需要调整48dp。您显然也希望对其他settingsMood文本视图进行类似的更改。