2013-04-10 4 views
24

Wenn ich den Emulator starte und den Bildschirm betrete, der diesen Code verwendet, zeigt er die meisten Textinformationen an, schneidet aber den oberen Teil des Bildschirms ab (kann nicht nach oben scrollen), lässt aber a etwas Platz am unteren Rand.ScrollView schneidet die Oberseite ab und lässt unten Platz

Hier ist der Code;

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

Weiß jemand, warum würde das passieren?

+0

Wenn möglich, hochladen. – MKJParekh

+0

hast du versucht, dieses android zu entfernen: padding = "10dip" und stattdessen android: margin = "10dip", um das ding zu erledigen? – QAMAR

+0

Versuchen Sie, 'android: fillViewport =" true "' Zeile in Ihrer Scrollview zu entfernen und dann zu überprüfen. – GrIsHu

Antwort

-3

Wenn Sie möchten, dass die TextViews scrollbar sind, warum setzen Sie ScrollView nicht um diese 2 Elemente?

<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

Ich habe das Problem behoben, die Lösung bestand darin, ScrollView nur um den TextView zu legen. – Maynn

+0

pls markieren Sie meine Antwort als gelöst Ihr Problem, thx :) – n4tiVe

+1

Sie haben Attribute aus ScrollView verpasst - plus ScrollView kann nicht mehr als auf direkte Vorgänger haben – Graeme

24

I hatte ein das gleiche Problem mit einem in einem HorizontalScrollViewScrollView. verschachtelt I die HorizontalScrollView zu center Schwerkraft eingestellt hatte, die das Problem verursacht wurde. Durch das Entfernen wurde das Problem behoben.

<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

Dies funktioniert, auch wenn Sie nicht geschachtelte scrollviews verwenden. Ich hatte ein lineares Layout in meinem Scrollview und das funktionierte für mich. – PFranchise

22

Dies wird wegen der Layoutgravitation in Ihrem LinearLayout verursacht. Da sich Ihr LinearLayout in einem ScrollView befindet, versuchen Sie wahrscheinlich nur, sich horizontal zu zentrieren (das Zentrieren innerhalb eines ScrollView macht das seither nicht). Ihr Linearlayouts zum Zentrum wie diese horizontal Festlegen sollte es tun:

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

Ich hatte das gleiche Problem .. Ich benutzte Android: layout_gravity = "center_vertical" in LinearLayout in ScrollView. –

+1

Das Gleiche. Das lineare Layout wurde zentriert statt horizontal zentriert. Vielen Dank! : D Dies sollte die akzeptierte Antwort sein. –

+0

danke, ich dachte, ich würde verrückt werden, während ich Tausende von Attributkombinationen ausprobiere – PhilLab

0

In meinem Fall ist das Problem requestFocus von EditText war.

In Ihrem Fall ist es keine EditText so das Problem ist etwas anderes. Für diejenigen, die Probleme mit scrollview Oberkanten schneiden haben, versuchen Sie, alle requestFocus von allen EditText zu entfernen.

1

Seine ganz einfach - Sie müssen nur layout_gravity von Linearlayout in die übergeordneten Container Scroll bewegen:

<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

Die beste Antwort, die ich gefunden und getestet haben, die dieses Problem behebt ist derjenige, der @hadi in dieser gab Frage: no gravity for scrollview. how to make content inside scrollview as center

wieder aufnehmen, die Antwort:

  • Setzen Sie Ihre Scroll in einem RelativeLayout.
  • Im Scrollview, stellen Sie die folgenden Schritte aus:
    • android: layout_height = "wrap_content"
    • android: layout_centerVertical = "true"
  • Setzen Sie Ihre vertikale Linearlayout innerhalb des Scroll.

würde der Code sein: Screenshot mit der Frage

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