RelativeLayout центр вертикальный
Я хочу создать макет строки списка. Этот макет имеет изображение в самом левом, текстовое окно рядом с изображением и изображение в самом правильном. Я хочу, чтобы все они были вертикальными по центру.
<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"
в текстовое представление, но результатом является выравнивание текста в нижней части с двумя изображениями.
Я попробовал это в эмуляторе Android 4.2.
Кто-нибудь может помочь мне в этом?
Ответы
Ответ 1
Я отредактировал ваш макет. Проверьте этот код сейчас.
<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>
Ответ 2
использовать
android:layout_centerVertical="true"
Ответ 3
Для меня мне пришлось удалить
<item name="android:gravity">center_vertical</item>
из RelativeLayout, поэтому будет работать конфигурация детей:
<item name="android:layout_centerVertical">true</item>
Ответ 4
Если View height/width = wrap_content → use:
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
Если View height/width = match_parent → use:
android:gravity="center_vertical|center_horizontal"
Ответ 5
Попробуйте сопоставить верхнюю и нижнюю части текстового вида с одним из значков, это сделает просмотр текста одинаковым по высоте, чем они, затем установите gravity
в 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" />
Ответ 6
Это работает для меня.
<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>
Ответ 7
Возможно, потому, что текст слишком высок. Измените android: layout_height textview на wrap_content или используйте
android:gravity="center_vertical"