2012-08-21 4 views
0

J'ai la mise en page ci-dessous qui contient principalement:Utiliser ListView comme fond de TextView

Disposition relative, qui agissent comme en-tête avec Textview et bouton.

et Listview.

Je souhaite que l'en-tête correspondant à la disposition relative ci-dessus soit transparent et que la liste apparaisse en tant qu'utilisateur défilant dans la liste.

Je sais comment rendre la mise en page transparente, mais je ne sais pas comment afficher la listview comme arrière-plan pour le "header".

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 




     <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/buttonlayout2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 

      android:orientation="horizontal" 
      android:background="#FFDBE2ED" 
      android:paddingBottom="0dp" 
       android:paddingTop="0dp" 
      > 
      <TextView 
       android:id="@+id/txtTest" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true" 
       android:gravity="center_vertical" 
       android:layout_centerVertical="true" 
       android:paddingLeft="0dp" 
       android:text="@string/list_header" 
       android:textColor="#000000" 
       android:textSize="25sp" 
       android:textStyle="bold"> 
      </TextView> 



      <Button 
       android:id="@+id/btnClear" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginBottom="0px" 
       android:layout_marginLeft="10px" 
       android:layout_marginRight="3px" 
       android:layout_marginTop="6px" 
       android:height="0dp" 
       android:text="Clear" 
       android:textSize="15sp" 
       android:width="70dp" 
       android:layout_alignParentRight="true" 
        > 
      </Button> 
     </RelativeLayout> 

    <ListView 
     android:id="@+id/mylist1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/form" 
     android:layout_alignParentTop="true" > 
    </ListView> 



</LinearLayout> 

screenshot

Répondre

2

Vous utilisez un LinearLayout comme conteneur racine et dans la disposition linéaire les vues sont placées les unes sur les autres, donc vous ne pouvez pas chevaucher une vue sur l'autre. Si vous voulez un effet de chevauchement, vous pouvez utiliser FrameLayout ou RelativeLayout en tant que conteneur racine.
L'utilisation de RelativeLayout est une meilleure option.
Voici un exemple de code pour cela:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </ListView> 

    <Button 
     android:id="@+id/view" 
     android:layout_width="fill_parent" 
     android:layout_height="100dp" 
     android:background="#00cc0000" 
     android:layout_alignParentTop="true" /> 
</RelativeLayout> 

Ici le bouton chevauche la vue de la liste.

J'espère que cela vous aidera :)

+0

Merci ... Je l'ai essayé, mais je reçois une erreur: E/AndroidRuntime (393): java.lang.RuntimeException: Impossible de démarrer l'activité Co mponentInfo {.MessagesActivity}: java.lang.ClassCastExce ption: android.widget.TextView – user836026

+0

pouvez-vous coller la sortie du chat de journal .. – karn

1

Essayez de déplacer la ListView à l'intérieur de votre RelativeLayout, comme premier élément (ce qui garantit qu'il est à l'arrière). De cette façon, les autres vues sont juste au-dessus de la ListView, et si vous les rendez transparent, vous devriez obtenir l'effet désiré! Oh, et vous devez faire le ListView puis remplissez le RelativeLayout:

<ListView 
    android:id="@+id/mylist1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentTop="true" > 
</ListView> 

, et faire le RelativeLayout remplir l'écran:

<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/buttonlayout2" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
... 
+0

Je suis erreur: java.lang.ClassCastExcetion: android.widget.TextView – user836026

+0

Hmm, bizarre. Utilisez-vous des identifiants dans vos mises en page plusieurs fois? Qu'est-ce que vous essayez de faire exactement? Je suppose que vous utilisez un appel findViewById? –