2013-04-10 87 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> 
相關問題