Уровень мельче центру по вертикали


Я хочу сделать макет строки списка. Этот макет имеет графическое представление в самый левый, элемент TextView, рядом с книги, и книги в самый правый. Я хочу, чтобы все они были в центре вертикали.

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

Я также пытался добавить android:layout_centerVertical="true" к textview, но результатом является выравнивание textview снизу с двумя imageview. Я попробовал это в эмуляторе android 4.2. Кто-нибудь может мне помочь в этом?

8 69

8 ответов:

я отредактировал ваш макет. Проверить этот код.

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

использовать

 android:layout_centerVertical="true"

Если высота/ширина представления = wrap_content

использование:

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

Если высота/ширина представления = match_parent

использование:

android:gravity="center_vertical|center_horizontal"

для меня, я должен был удалить

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

С RelativeLayout, так что детская конфигурация будет работать:

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

попробуйте выровнять верхнюю и нижнюю часть текстового представления на один из значков, это сделает текстовый вид такой же высоты, как и они, а затем установите gravity to center_vertical чтобы сделать текст внутри текстового представления Центра по вертикали.

<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" />

это работает для меня.

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

это может быть потому, что textview слишком высок. Изменять android:layout_height из TextView для wrap_content в качестве параметров или использовать

android:gravity="center_vertical"

добавление android:layout_centerInParent и android:layout_centerVertical работа для меня в центр ImageView как по вертикали, так и по горизонтали:

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