2013-04-10 91 views
24

当我启动模拟器并进入使用此代码的屏幕时,它会显示大部分文本信息,但会切断屏幕的顶部(不能向上滚动),但会留下一个位于底部的一点空间。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" > 

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

有谁知道为什么会发生这种情况?

+0

如果可能的话,上传与问题的屏幕截图。 – MKJParekh 2013-04-10 10:13:34

+0

您是否尝试删除此android:padding =“10dip”,并使用android:margin =“10dip”来完成此操作? – QAMAR 2013-04-10 10:19:54

+0

尝试在你的滚动视图中删除'android:fillViewport =“true”'行,然后检查。 – GrIsHu 2013-04-10 10:22:23

回答

-3

如果你想TextViews是可滚动的,为什么不把ScrollView放在这2个元素周围?

<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> 
+0

我已经解决了这个问题,解决方法是只将ScrollView放在TextView的周围。 – Maynn 2013-04-10 14:13:40

+0

请标记我的答案,因为解决了你的问题,thx :) – n4tiVe 2013-04-11 14:39:54

+1

你已经错过了ScrollView的属性 - 加上ScrollView不能超过直接派生 – Graeme 2015-04-08 12:48:10

24

我有同样的问题与嵌套在ScrollView.我有HorizontalScrollView重力设定为center这是造成问题内部的HorizontalScrollView。只是删除它解决了这个问题。

<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> 
+0

即使你没有使用嵌套滚动视图,我的滚动视图中有一个线性布局,这对我很有用。 – PFranchise 2013-10-01 21:18:47

22

这是由于LinearLayout中的layout_gravity引起的。由于您的LinearLayout位于ScrollView内部,因此您可能只是试图水平居中(垂直居中,因为ScrollView不能生成)。指定您的LinearLayout到中心水平这样应该做的伎俩:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_gravity="center_horizontal" 
    android:padding="10dip" > 
+0

我有同样的问题..我在ScrollView里面的LinearLayout中使用了android:layout_gravity =“center_vertical”。 – 2014-12-02 11:52:52

+1

同样的事情。线性布局居中,而不是水平居中。谢谢! :D 这应该是被接受的答案。 – 2016-09-22 01:17:39

+0

谢谢,我想我会在尝试数千种属性组合时发疯 – PhilLab 2017-06-27 15:15:17

0

在我的情况,问题的EditTextrequestFocus

在你的情况下,他们不是EditText所以问题是其他的东西。对于有滚动视图切割顶部边缘问题的人,请尝试从所有EditText中删除所有requestFocus

1

它很简单 - 你只需要从移动的LinearLayout到layout_gravity你父容器滚动型:

<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" > 
5

最佳答案我已经找到并测试修复此问题是,在@hadi这给了一个问题: no gravity for scrollview. how to make content inside scrollview as center

恢复了答案:

  • 把你的滚动型的RelativeLayout内。
  • 在滚动型,设置如下:
    • 机器人:layout_height = “WRAP_CONTENT”
    • 机器人:layout_centerVertical = “真”
  • 把滚动型的内部垂直的LinearLayout。

的代码将是:

<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> 
相关问题