2013-07-27 10 views
8

Ich habe eine Listenansicht erstellen, die mit AsyncTask und am unteren Rande der App ein festes Overlay-Layout so zeigen, ich muß gefüllt werden:Wie ein Overlay-Layout auf eine Listenansicht

enter image description here

Aber ich kann nicht herausfinden, wie ich das in XML machen kann? Das ist mein Geschenk layout.xml:

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

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

    <!-- Probably I need to do something here --> 

</LinearLayout> 
+0

http://www.curious-creature.org/2009/03/01/android-layout-tricks-3-optimize-part-1/ Nimm das :) –

Antwort

9

Als Daniel vorgeschlagen hat, verwenden Sie einen RelativeLayout, weil es das Stapeln von Komponenten (gleiche mit FrameLayout und SurfaceView) ermöglicht. Der folgende Code wird Ihnen das Layout, das Sie suchen:

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

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

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@color/transparentBlack" 
    android:layout_alignParentBottom="true" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView1" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="20dp" 
     android:text="Medium Text" 
     android:textColor="@color/white" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_marginLeft="40dp" 
     android:text="Large Text" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="@color/white" /> 

    </RelativeLayout> 

</RelativeLayout> 

In dem obigen Code verwendeten Farbe Hex-Werte für transparentBlack ist #95000000 und white ist #ffffff.

Hier ist ein hervorragendes Tutorial zu den Grundlagen des UI-Designs in Android: Android User Interface Design: Layout Basics.

+1

Danke, es funktioniert perfekt! Ich werde den Link lesen, den Sie geben :) –

+1

Was, wenn Sie in der Lage sein möchten, den untersten Eintrag über der Überlagerungstaste zu scrollen? – l33t

+1

@ l33t Angenommen, Sie verwenden eine 'ArrayList', um Listenobjekte zu speichern. Fügen Sie ein leeres Spacer-Element am Ende dieser Liste hinzu. In 'getView() 'deines Adapters => when (position == mArrayList.size-1), setze die Höhe von' convertView' auf deine 'overlay's' Höhe => setze die Sichtbarkeit von convertView auf' View.INVISIBLE'. Habe das noch nicht versucht - dieser Ansatz könnte also einige Modifikationen erfordern. Wenn Sie möchten, können Sie meine Antwort mit Ihrer endgültigen Implementierung bearbeiten. – Vikram

2

Ändern des übergeordnete Layout RelativeLayout oder FrameLayout und den festen Blick auf gleicher Höhe der ListView positionieren (aber nach dem ListView)

Etwas wie:

---> RelativeLayout 
    --> ListView 
    --> Any view as the fixed view 

anschließend können Sie den festen Blick auf den Boden der Verpackung RelativeLayout

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

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

    <!-- Here you should position the fixed view --> 
</RelativeLayout> 
+0

Können Sie mir ein Codebeispiel geben? –

Verwandte Themen