Android 相对布局在屏幕外 运行

Android Relative Layout is running off screen

我遇到了一个问题,其中相对布局似乎 运行在模拟器中离开屏幕但在设计器中正确显示。

我在 RelativeLayout 中有一个 LinearLayout 和一个按钮。 LinearLayout 包含一些 TextView,然后是一个带有单选按钮的 ScrollView(数字要动态分配)。

无论单选按钮的数量如何,将 LinearLayout 和按钮放在 RelativeLayout 中都会使按钮停留在屏幕底部。这允许我将按钮锚定到屏幕底部,并将 LinearLayout 的底部锚定到按钮的顶部。

在 Android Studio designer 中这个作品太棒了!该按钮位于底部,如果收音机超出屏幕范围,您可以滚动它们。当我 运行 模拟器虽然屏幕在按钮之前被切断!我在 Microsoft 和 Android(太慢)模拟器中都试过了,得到了相同的结果。

我在 发现了一个类似的问题,它指出将这一行添加到我的按钮中:

android:layout_marginBottom="@dimen/activity_horizontal_margin"

这使它中途回到屏幕上,但不是一直回到屏幕上,该线程的其余部分是关于删除我想在此用例中保留的 LinearLayout。似乎这里发生了更多事情。我究竟做错了什么?这是我的 XML:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:paddingBottom="16dp"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.complexityresolved.lifetracker.RadioInputsActivity$PlaceholderFragment"
    android:gravity="center_horizontal">

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.complexityresolved.lifetracker.RadioInputsActivity$PlaceholderFragment"
    android:orientation="vertical"
    android:layout_centerHorizontal="true"
    android:layout_above="@+id/radioInputsActivityDoneButton">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Text With Trait Name"
        android:id="@+id/RadioScreenTextViewTraitName"
        android:layout_gravity="center_horizontal"
        android:clickable="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Text With Short Description"
        android:id="@+id/RadioScreenTextViewShortDescription"
        android:layout_gravity="center_horizontal"
        android:visibility="gone" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/scrollView">
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <RadioButton android:id="@+id/radio_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/radio_ninjas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/radio_irates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/radio_injas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/radio_rates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/radio_njas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/radio_ates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/radio_jas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/adio_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/adio_ninjas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/dio_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/dio_ninjas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/raio_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/raio_ninjas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
            <RadioButton android:id="@+id/rao_pirates"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="pirates"/>
            <RadioButton android:id="@+id/rao_ninjas"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ninjas"/>
        </RadioGroup>
    </ScrollView>

</LinearLayout>

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/radioInputsActivityDoneButton"
        android:id="@+id/radioInputsActivityDoneButton"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="@dimen/activity_horizontal_margin"/>
</RelativeLayout>

Picture in the designer

Picture in the emulator

此外,我的 activity 布局符合要求:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.complexityresolved.lifetracker.RadioInputsActivity">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/appbar_padding_top"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">

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

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>

你为什么不试试 weightSum,试试下面的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="5dp"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.complexityresolved.lifetracker.RadioInputsActivity$PlaceholderFragment">

    <LinearLayout xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:orientation="vertical"
        android:weightSum="10">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.5"
            android:orientation="vertical">

            <TextView
                android:id="@+id/RadioScreenTextViewTraitName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:clickable="true"
                android:text="Text With Trait Name"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <TextView
                android:id="@+id/RadioScreenTextViewShortDescription"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="Text With Short Description"
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:visibility="visible" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="8.5"
            android:orientation="vertical">

            <ScrollView
                android:id="@+id/scrollView"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

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

                    <RadioButton
                        android:id="@+id/radio_pirates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/radio_ninjas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/radio_irates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/radio_injas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/radio_rates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/radio_njas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/radio_ates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/radio_jas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/adio_pirates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/adio_ninjas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/dio_pirates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/dio_ninjas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/raio_pirates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/raio_ninjas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />

                    <RadioButton
                        android:id="@+id/rao_pirates"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="pirates" />

                    <RadioButton
                        android:id="@+id/rao_ninjas"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="ninjas" />
                </RadioGroup>
            </ScrollView>

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="0.75">

            <Button
                android:id="@+id/radioInputsActivityDoneButton"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="radioInputsActivityDoneButton" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

希望对您有所帮助。

试试这个:-

我已经测试了你,我看到了你上面提到的问题。 我已经更新了您的代码并在下面发布。它运作良好。

在你的Activity.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"      tools:context="com.complexityresolved.lifetracker.RadioInputsActivity">

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

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="@dimen/appbar_padding_top"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|enterAlways"
                app:popupTheme="@style/AppTheme.PopupOverlay">

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

        </android.support.design.widget.AppBarLayout>

        <android.support.v4.view.ViewPager
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>

我通过这个程序解决了这个问题

**使用相对布局

**首先根据边界设置边界项(左侧项使用alignparentleft=true,右侧项使用alignparentright=true)

**现在针对左右项目设置内部项目 查看我的代码和截图

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:paddingBottom="8dp"
    android:paddingTop="11dp"
    android:background="@color/white">
    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/memberRankListViewImage"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/fb_profile"
        app:border_color="#FF000000"
        android:layout_marginLeft="16dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/memberRankListViewText"
        android:layout_toRightOf="@+id/memberRankListViewImage"
        android:layout_toLeftOf="@+id/timeofnotifictioan"
        android:textSize="14sp"
        android:text="titlefsdfsdfdfgfhfghfghgfdgjnfdshdshjdfjfghdjlfgdjlfgjldfgnjfgnjfgnhjhfgnjhgnhjkklfdjsdklfjskdfjkfgfgkndfjksdkajsdkasj of job"
        android:textColor="@color/customBlackText"
        android:layout_marginLeft="16dp"
        />
    <TextView
        android:id="@+id/timeofnotifictioan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:text="2015/12/20"
        android:textColor="@color/year"
        android:layout_alignParentRight="true"
        android:layout_marginTop="38dp"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="10dp"/>

</RelativeLayout>

这里是截图