2013-04-10 22 views
24

Quando avvio l'emulatore e accedo allo schermo che utilizza questo codice mostra la maggior parte delle informazioni di testo ma taglia la parte superiore dello schermo (non è possibile scorrere verso l'alto) ma lascia un un po 'di spazio in basso.ScrollView taglia la parte superiore e lascia lo spazio nella parte inferiore

Ecco il codice;

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

Qualcuno sa perché sarebbe successo?

+0

Se possibile, Carica lo screenshot con la domanda. – MKJParekh

+0

hai provato a rimuovere questo android: padding = "10dip" e usa android: margin = "10dip" invece di fare la cosa? – QAMAR

+0

Prova a rimuovere 'android: fillViewport =" true "' riga nella tua scrollview e poi controlla. – GrIsHu

risposta

-3

Se vuoi che le TextView siano scorrevoli, perché non metti ScrollView attorno a questi 2 elementi?

<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

Ho risolto il problema, la soluzione era mettere ScrollView solo attorno a TextView. – Maynn

+0

pls segna la mia risposta come risolto il tuo problema, thx :) – n4tiVe

+1

Hai perso gli attributi fuori da ScrollView - più ScrollView non può avere più che sul diretto decente – Graeme

24

Ho avuto un lo stesso problema con un HorizontalScrollView annidato all'interno di un ScrollView. avevo il HorizontalScrollView gravità impostato center che stava causando il problema. La semplice rimozione ha risolto il problema.

<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

Questo funziona anche se non stai usando scrollview anonimi. Ho avuto un layout lineare all'interno della mia scrollview e questo ha funzionato per me. – PFranchise

22

Questo è causato dal layout_gravity nel LinearLayout. Dal momento che il tuo LinearLayout si trova all'interno di una ScrollView probabilmente stai solo cercando di centrare orizzontalmente (il centraggio verticale all'interno di una ScrollView non fa da allora). Specificando il LinearLayout al centro orizzontalmente come questo dovrebbe fare il trucco:

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

Ho avuto lo stesso problema .. Stavo usando Android: layout_gravity = "center_vertical" in LinearLayout all'interno di ScrollView. –

+1

Stessa cosa. Il layout lineare era centrato anziché centrato orizzontalmente. Grazie! : D Questa dovrebbe essere la risposta accettata. –

+0

grazie, ho pensato che sarei diventato matto mentre provavo migliaia di combinazioni di attributi – PhilLab

0

Nel mio caso il problema era requestFocus di EditText.

Nel tuo caso il loro è il EditText quindi il problema è qualcosa di diverso. Per coloro che hanno problemi con scrollview taglia i bordi superiori, prova a rimuovere tutti gli requestFocus da tutti gli EditText.

1

La sua abbastanza semplice - è sufficiente per spostare layout_gravity dal LinearLayout nel vostro genitore contenitore 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" > 
5

La risposta migliore che ho trovato e provato che risolve questo problema è quella che ha dato in questo @hadi domanda: no gravity for scrollview. how to make content inside scrollview as center

Ripresa la risposta:

  • Metti la tua ScrollView all'interno di una RelativeLayout.
  • Nel ScrollView, impostare la seguente:
    • android: layout_height = "wrap_content"
    • android: layout_centerVertical = "true"
  • Metti la tua LinearLayout verticale all'interno del ScrollView.

Il codice sarebbe:

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