Android ScrollView切断顶部,在底部留出空间
当我启动emulator并进入使用此代码的屏幕时,它会显示大部分文本信息,但会切断屏幕顶部(无法向上滚动),但在底部留下一点空间 这是代码Android ScrollView切断顶部,在底部留出空间,android,xml,scrollview,Android,Xml,Scrollview,当我启动emulator并进入使用此代码的屏幕时,它会显示大部分文本信息,但会切断屏幕顶部(无法向上滚动),但在底部留下一点空间 这是代码 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:visibi
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
android:fillViewport="true"
android:id="@+id/backgroundImage" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:padding="10dip" >
<ImageView
android:id="@+id/earthSymbolImageView"
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/earthsymbol" />
<TextView
android:id="@+id/earth_content1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/earth_title"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/earth_content2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/earth_text"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/backButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/back" />
</LinearLayout>
</ScrollView>
有人知道为什么会发生这种情况吗?如果希望文本视图可以滚动,为什么不在这两个元素周围放置滚动视图
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:padding="10dip" >
<ScrollView>
<ImageView
android:id="@+id/earthSymbolImageView"
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/earthsymbol" />
<TextView
android:id="@+id/earth_content1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/earth_title"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/earth_content2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/earth_text"
android:textColor="#FFFFFF" />
</ScrollView>
<Button
android:id="@+id/backButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/back" />
</LinearLayout>
嵌套在
滚动视图中的水平滚动视图
也有同样的问题。
我将水平滚动视图
重力设置为中心
,这是导致问题的原因。只需移除它就解决了问题
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="1000dp"
android:layout_height="1000dp"
android:gravity="center"
android:layout_gravity="center"
android:text="New Text"/>
</LinearLayout>
</HorizontalScrollView>
这是由于线性布局中的布局重力引起的。由于线性布局在ScrollView中,您可能只是尝试水平居中(在ScrollView中垂直居中不会产生任何效果)。像这样将线性布局指定为水平居中应该可以做到:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:padding="10dip" >
在我的例子中,问题是
EditText
的requestFocus
在您的情况下,他们的编辑文本是no
EditText
,因此问题是其他的。对于那些有scrollview切割顶部边缘问题的人,请尝试从所有EditText
中删除所有requestFocus
,这非常简单-您只需将布局从LinearLayout移动到父容器scrollview中:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
android:fillViewport="true"
android:id="@+id/backgroundImage"
android:layout_gravity="center" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dip" >
我找到并测试的解决此问题的最佳答案是@hadi在这个问题中给出的答案: 恢复答复:
- 将您的ScrollView放在RelativeLayout中
- 在ScrollView中,设置以下内容:
- android:layout\u height=“包装内容”
- android:layout\u centerVertical=“true”
- 将垂直线布局放在滚动视图内
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
...
</LinearLayout>
</ScrollView>
</RelativeLayout>
...
您必须在LinearLayout中添加marginBottom
从Horizontalscroll视图内的线性/相对布局中删除布局\u重力,它会起作用。如果可能,上传带有问题的屏幕截图。您是否尝试删除此android:padding=“10dip”并使用android:margin=“10dip”来完成此操作?尝试删除android:fillViewport=“true”
在滚动视图中选择一行,然后选中,左边的图片显示了屏幕的底部,右边的图片显示了顶部。我已经解决了这个问题,解决方案是将ScrollView仅放在TextView的周围。您错过了ScrollView的属性-加上ScrollView的属性不能超过direct Decedent。即使您没有使用嵌套的ScrollView,这也可以工作。我在scrollview中有一个线性布局,这对我很有用。我也有同样的问题。。我在ScrollView内部的LinearLayout中使用了android:layout\u gravity=“center\u vertical”。同样的事情。线性布局居中,而不是水平居中。谢谢D这应该是公认的答案。谢谢你,我想我会发疯,当我尝试数千个属性组合时为什么在滚动视图中垂直居中没有意义?当我的应用程序处于纵向模式时,一切正常,一切可见。我的ScrollView由带有登录表单的CardView(或FrameLayout等)组成。当应用程序处于纵向模式且所有链接都可见时,我希望表单垂直居中。另一方面,当应用程序处于横向模式时,CardView不适合屏幕,所以我希望它滚动。android:layout\u gravity=“center\u horizontal”
刚刚对我起作用。这种方式似乎没有考虑内部视图的底部边距。但从现在起,我发现它最接近完美。最佳答案:)拯救了我的一天
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="visible"
android:fillViewport="true"
android:id="@+id/backgroundImage" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center"
android:padding="10dip"
android:layout_marginBottom="96dp" >
<ImageView
android:id="@+id/earthSymbolImageView"
android:layout_width="25dp"
android:layout_height="25dp"
android:src="@drawable/earthsymbol" />
<TextView
android:id="@+id/earth_content1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/earth_title"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<TextView
android:id="@+id/earth_content2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/earth_text"
android:textColor="#FFFFFF" />
<Button
android:id="@+id/backButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/back" />
</LinearLayout>
</ScrollView>