Android相对布局正在屏幕上运行

时间:2016-02-11 03:05:24

标签: android android-layout android-relativelayout

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

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

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

在Android Studio设计器中,这非常有用!按钮位于底部,如果无线电延伸到屏幕之外,您可以滚动它们。当我运行模拟器,虽然屏幕在按钮之前被切断!我在微软和Android(速度很慢)模拟器中尝试了这个,并得到了相同的结果。

我在Android: Relative layout content goes below screen找到了一个类似的问题,指出我在按钮上添加了这一行:

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

另外,我的活动布局如要求:

<?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>

3 个答案:

答案 0 :(得分:3)

试试这个: -

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

在您的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>

答案 1 :(得分:0)

为什么不尝试 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>

希望这有帮助。

答案 2 :(得分:0)

我通过这个程序摆脱了这个问题

**使用相对布局

**首先设置相对于边界的边界项(左边的项目使用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>

这是截图

items not overflow example