2013-09-07 18 views
24

Ho un layout relativo con più "imageview" e quando giro lo schermo, le immagini visualizzate diventano disordinate ... quindi ho deciso di avvolgerlo in una vista di scorrimento ... ma la vista di scorrimento non lo fa lavoro !!! qualcuno può aiutarmi con quello? So che il modo giusto è di progettare una griglia o una lista ... ma poiché ho avuto alcune domande e nessuno mi ha risposto nello stackoverfloa, ho deciso di andare in questo modo. Ecco il mio codice XML:Layout relativo in ScrollView

<?xml version="1.0" encoding="utf-8"?> 


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ScrollView01" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true" 
    android:scrollbars="none" > 


<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


    <Button 
     android:id="@+id/continuePizza" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:text="continue" /> 

    <Button 
     android:id="@+id/finishP" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/continuePizza" 
     android:layout_alignParentLeft="true" 
     android:text="finish" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="16dp" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imageView1" 
     android:layout_marginLeft="18dp" 
     android:layout_toRightOf="@+id/imageView1" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/imageView1" 
     android:layout_marginTop="18dp" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageView3" 
     android:layout_centerVertical="true" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imageView3" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/imageView5" 
     android:layout_marginTop="17dp" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageView2" 
     android:layout_alignTop="@+id/imageView5" 
     android:layout_marginLeft="10dp" 
     android:src="@drawable/download" /> 
    <ImageView 
     android:id="@+id/imageView8" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageView7" 
     android:layout_alignTop="@+id/imageView3" 
     android:src="@drawable/download" /> 

</RelativeLayout> 

</ScrollView> 

risposta

19

ho sperimentato lo stesso problema con layout relativa all'interno di scorrimento Visualizza per superare questo ho avvolto intorno al mio layout relativa con un layout lineare, provare come questo e rimuovere anche l'orientamento dal layout relativo

<?xml version="1.0" encoding="utf-8"?> 


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/ScrollView01" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fillViewport="true" 
android:scrollbars="none" > 

<LinearLayout android:layout_width="match_parent" 
android:layout_height="match_parent"> 


<RelativeLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 


<Button 
    android:id="@+id/continuePizza" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:text="continue" /> 

<Button 
    android:id="@+id/finishP" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/continuePizza" 
    android:layout_alignParentLeft="true" 
    android:text="finish" /> 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="16dp" 
    android:src="@drawable/download" /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/imageView1" 
    android:layout_marginLeft="18dp" 
    android:layout_toRightOf="@+id/imageView1" 
    android:src="@drawable/download" /> 

<ImageView 
    android:id="@+id/imageView3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imageView1" 
    android:layout_marginTop="18dp" 
    android:src="@drawable/download" /> 

<ImageView 
    android:id="@+id/imageView5" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imageView3" 
    android:layout_centerVertical="true" 
    android:src="@drawable/download" /> 

<ImageView 
    android:id="@+id/imageView6" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/imageView3" 
    android:src="@drawable/download" /> 

<ImageView 
    android:id="@+id/imageView4" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/imageView5" 
    android:layout_marginTop="17dp" 
    android:src="@drawable/download" /> 

<ImageView 
    android:id="@+id/imageView7" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imageView2" 
    android:layout_alignTop="@+id/imageView5" 
    android:layout_marginLeft="10dp" 
    android:src="@drawable/download" /> 
<ImageView 
    android:id="@+id/imageView8" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imageView7" 
    android:layout_alignTop="@+id/imageView3" 
    android:src="@drawable/download" /> 

</RelativeLayout> 
</LinearLayout> 
</ScrollView> 
+0

ho fatto la vostra soluzione e di fronte a tanti errori! anche l'attività non si presenta in questo modo! :( –

+0

qual è l'errore – Ravi

+0

Volevo copiare gli errori e quindi eseguire nuovamente l'applicazione ... è divertente che non ci sia nessun errore ora ma nessuna differenza per il problema! Ho ancora quel problema ... –

-4

ho potuto risolvere il mio problema con l'aiuto del caro Ravi e un piccolo cambiamento bit: il codice va così:

<?xml version="1.0" encoding="utf-8"?> 


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/ScrollView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scrollbars="none" > 



     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="427dp" > 



<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="548dp" > 




    <Button 
     android:id="@+id/continuePizza" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:text="continue" /> 

    <Button 
     android:id="@+id/finishP" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/continuePizza" 
     android:layout_alignParentLeft="true" 
     android:text="finish" /> 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="16dp" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imageView1" 
     android:layout_marginLeft="18dp" 
     android:layout_toRightOf="@+id/imageView1" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/imageView1" 
     android:layout_marginTop="18dp" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageView3" 
     android:layout_centerVertical="true" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imageView3" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/imageView5" 
     android:layout_marginTop="17dp" 
     android:src="@drawable/download" /> 

    <ImageView 
     android:id="@+id/imageView7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageView2" 
     android:layout_alignTop="@+id/imageView5" 
     android:layout_marginLeft="10dp" 
     android:src="@drawable/download" /> 
    <ImageView 
     android:id="@+id/imageView8" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/imageView7" 
     android:layout_alignTop="@+id/imageView3" 
     android:src="@drawable/download" /> 

</RelativeLayout> 
</LinearLayout> 
</ScrollView> 
+2

Non penso che le dimensioni dell'altezza siano la scelta giusta. –

1

Quando si utilizza ScrollView, è necessario sapere che è possibile scorrere solo quando l'altezza di ScrollView è inferiore all'altezza del bambino di ScrollView.
Per risolvere questo problema, è possibile definire l'altezza di LinearLayout su match_parent, che è l'unico figlio di ScrollView. Quindi definire l'altezza di ScrollView nel codice Java, ad esempio scrollView.getChildAt(0).getHeight() - 1; per assicurarsi che l'altezza di ScrollView sia inferiore all'altezza del figlio di ScrollView.
Per la tua risposta, non è un buon modo per usare numeri magici nel tuo codice, come 427dp e 548dp.

22

soluzione semplice, basta aggiungere Android: fillViewport = "true" per Scrollview come:

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

<RelativeLayout ....... /> 

</ScrollView> 
+0

Questo ha fatto il trucco! Grazie! :) – Marlon

Problemi correlati