2013-05-10 21 views
60

Liste satırı yerleşimi oluşturmak istiyorum. Bu düzen en solda bir resim görünümüne, resim görünümünün yanında bir metin görünümüne ve en sağdaki bir görüntü görünümüne sahiptir. Hepsinin merkez dikey olmasını istiyorum. RelativeLayout merkezi dikey

<RelativeLayout 
    android:layout_width="fill_parent" android:layout_height="100dp" 
    android:gravity="center_vertical" 
    > 
    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="50dp" android:layout_height="50dp" 
     android:layout_gravity="center_vertical" /> 
    <TextView 
     android:id="@+id/func_text" android:layout_toRightOf="@id/icon" 
     android:layout_width="wrap_content" android:layout_height="100dp" 
     android:layout_gravity="center_vertical" /> 
    <ImageView 
     android:layout_width="50dp" android:layout_height="50dp" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="center_vertical" 
     android:src="@drawable/arrow" /> 
</RelativeLayout> 

Ben de textview android:layout_centerVertical="true" eklemek çalıştı, ancak sonuç iki ImageView ile TextView'un hizalama altına. Bunu android 4.2 emülatöründe denedim. Bu konuda bana herkes yardımcı olabilir mi?

+0

İhtiyacınız maketini takmak Can yapmak? – Noundla

cevap

58

Düzeninizi düzenledim. Şimdi bu kodu kontrol et.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#33B5E5" 
android:padding="5dp" > 

<ImageView 
    android:id="@+id/icon" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignParentLeft="true" 
    android:layout_centerInParent="true" 
    android:background="@android:drawable/ic_lock_lock" /> 

<TextView 
    android:id="@+id/func_text" 
    android:layout_width="wrap_content" 
    android:layout_height="100dp" 
    android:layout_gravity="center_vertical" 
    android:layout_toRightOf="@+id/icon" 
    android:gravity="center" 
    android:padding="5dp" 
    android:text="This is my test string............" 
    android:textColor="#FFFFFF" /> 

<ImageView 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_alignParentRight="true" 
    android:layout_centerInParent="true" 
    android:layout_gravity="center_vertical" 
    android:src="@android:drawable/ic_media_next" /> 

</RelativeLayout> 
150

kullanım

android:layout_centerVertical="true" 
+23

Doğru yanıt bu olmalı, çünkü RelativeLayout öğesinde layout_gravity özelliği bulunmuyor. – MightySeal

+3

, göreceli düzende değil, göreceli düzende bulunan elemanlarda kullanır. –

+0

Bu bağlantı RelativeLayout ve onun çocuklarına eklendiğimde çalıştı. –

1

Bu belki TextView'un çok yüksek olduğundan. Android'i değiştirin: textview öğesinin layout_height öğesi wrap_content veya

android:gravity="center_vertical" 
3

Bu benim için çalışıyor.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/rell_main_bg" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#096d74" > 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" 
    android:src="@drawable/img_logo_large" 
    android:contentDescription="@null" /> 

</RelativeLayout> 
6

simgesinin birine üst ve metin görünümünde alt hizalayarak deneyin, bu da onları daha sonra dikey metin görünümü merkezi içindeki metni yapmak center_vertical için gravity set ile aynı yüksekliğe paylaşan metin görünümü yapacaktır. Benim için

<TextView 
     android:id="@+id/func_text" android:layout_toRightOf="@id/icon" 
     android:layout_alignTop="@id/icon" android:layout_alignBottom="@id/icon" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:gravity="center_vertical" /> 
7

, ben çocuk yapılandırması çalışacak, böylece RelativeLayoutden

<item name="android:gravity">center_vertical</item> 

kaldırmak zorunda:

<item name="android:layout_centerVertical">true</item> 
+0

Bu işte! RelativeLayout gelen android: gravity center_vertical kaldırdıktan sonra hemen çalışmak için var. – Bruce

9

Views'ın yükseklik/genişlik = wrap_content ise -> Kullanım:

android:layout_centerHorizontal="true" 
android:layout_centerVertical="true" 

Eğer Views'ın yükseklik/genişlik = match_parent -> kullanımı: me ImageView ortalamak için

android:gravity="center_vertical|center_horizontal" 
0

hem android:layout_centerInParent ve android:layout_centerVertical işi ekleme hem dikey hem de yatay:

<ImageView 
    .. 
    android:layout_centerInParent="true" 
    android:layout_centerVertical="true" 
    />