2013-07-27 7 views
8

bir liste görünümü üzerine bir kaplama düzeni oluşturmak için Ama bunu xml'de nasıl yapabileceğimi anlayamıyorum? Bu benim şimdiki Layout.xml geçerli:nasıl <code>AsyncTask</code> ile ve böyle bir sabit bindirme düzenini göstermek gerekir uygulamanın alt kenarında dolu olacak bir liste görünümü var

<?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/ Bunu al :) –

cevap

9

, bir RelativeLayout kullanın. Aşağıdaki kod size aradığınız düzeni verecektir: Yukarıdaki kodda

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

, transparentBlack için kullanılan renk onaltılık değerleri #95000000 ve white#ffffff olduğunu.

İşte Android'de UI tasarımının temelleri hakkında mükemmel bir öğretici: Android User Interface Design: Layout Basics.

+1

Teşekkürler, mükemmel çalışıyor! Verdiğiniz bağlantıyı okuyacağım :) –

+1

Eğer bindirme düğmesinin üzerindeki en alttaki öğeyi kaydırmak isterseniz? – l33t

+1

@ l33t Liste nesnelerini tutmak için bir "ArrayList" kullandığınızı varsayalım. Bu listenin sonuna 'boş' bir spacer öğesi ekleyin. Bağdaştırıcınızın getView() 'ında, (position == mArrayList.size-1) olduğunda, 'convertView' öğesinin yüksekliğini' bindirme 'yüksekliğine ayarlayın => convertView öğesinin görünürlüğünü 'View.INVISIBLE' olarak ayarlayın. Bunu denemedim - bu yüzden bu yaklaşım bazı değişikliklere ihtiyaç duyabilir. İsterseniz, cevabımı nihai uygulamanızla düzenleyebilirsiniz. – Vikram

2

Değişim için ana düzen RelativeLayout veya FrameLayout ve ListView aynı seviyede sabit görünümü konumlandırmak (ama ListView sonra) gibi

Something:

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

Daha sonra sarma RelativeLayout

0 dibine sabitlenmiş bir görünüm hizalayabilirsiniz o ( FrameLayout ve SurfaceView ile aynı) bileşenlerinin istiflenmesini izin verdiğinden Daniel önerdiği gibi
<?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

Bana bir kod örneği verebilir misiniz? –