Android Activity无法滚动到底部 排查XML布局文件问题
问题原因
- 你当前使用的根布局
RelativeLayout本身不支持滚动功能,当页面内所有控件的总高度超过手机屏幕的物理高度时,超出屏幕的部分会直接被截断,无法通过滑动查看。 - 按钮控件的布局属性存在冲突:你同时给Button设置了
layout_below="@+id/tvSummary"(位于简介文本下方)、layout_alignParentBottom="true"(位于父布局底部)两个冲突的位置属性,加上底部188dp的边距设置,会导致控件位置计算异常,后续的RatingBar也会被挤出可视区域。
修复方案
在外层嵌套ScrollView作为根布局,让页面获得滚动能力,同时删除Button的冲突属性即可,修改后的完整代码如下:
<?xml version="1.0" encoding="utf-8"?> <ScrollView 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:background="@drawable/gradient" android:fillViewport="true" tools:context=".ClickedItemActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="400dp" android:layout_centerHorizontal="true" android:src="@mipmap/ic_launcher" android:scaleType="fitXY" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Name" android:textSize="16sp" android:layout_below="@+id/imageView" android:layout_centerHorizontal="true" android:id="@+id/tvName"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Director" android:textSize="16sp" android:layout_below="@+id/tvName" android:layout_centerHorizontal="true" android:id="@+id/tvDirector"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Genre" android:textSize="16sp" android:layout_below="@+id/tvDirector" android:layout_centerHorizontal="true" android:id="@+id/tvGenre"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Summary" android:textSize="16sp" android:layout_below="@+id/tvGenre" android:layout_centerHorizontal="true" android:id="@+id/tvSummary"/> <Button android:id="@+id/button3" android:layout_width="300dp" android:layout_height="50dp" android:layout_marginTop="20dp" android:background="@drawable/button_background" android:layout_centerHorizontal="true" android:shadowRadius="@android:integer/config_mediumAnimTime" android:text="Гласувай" android:layout_below="@+id/tvSummary"/> <RatingBar android:id="@+id/ratingBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_centerHorizontal="true" android:layout_below="@+id/button3" /> </RelativeLayout> </ScrollView>
额外说明
- 所有TextView的textSize单位从dp调整为sp,这是Android官方推荐的字体单位,会跟随系统字体大小调整,符合用户使用习惯。
- 给Button和RatingBar增加了合适的顶部边距,避免控件挨太近影响视觉效果。
- ScrollView的
fillViewport="true"属性是为了避免当页面内容不足一屏时布局显示异常,不影响滚动功能。
内容的提问来源于stack exchange,提问作者Robincho Bibanka
相关产品推荐
相关产品推荐

