我遇到一个问题,其中相对布局似乎在模拟器中的屏幕上运行,但在设计器中正确显示。
我在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>
另外,我的活动布局如要求:
<?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>
答案 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>
这是截图