如何在其父级中垂直居中ImageView?

use*_*239 23 java android

我的布局设计是一个带有长文本的TextView和一个位于TextView右侧的ImageView.我想将ImageView垂直放在其父级中,所以我使用了android:layout_centerVertical ="true",但事实证明ImageView已经与其父级的底部对齐.如果我不使用layout_centerVertical属性,则ImageView将与其父级的顶部对齐.我怎么解决这个问题?谢谢.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:background="#000000">
    <ImageView android:id="@+id/t3" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:src="@drawable/arrow_right"
        android:layout_alignParentRight="true" android:background="#ff0000"
        android:layout_centerVertical="true" android:scaleType="centerInside" />
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This a very very very very very very very very very very very very very very very very long sentence"
        android:textColor="#231ACC" android:layout_toLeftOf="@id/t3" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

Ses*_*nay 37

尝试 android:layout_gravity="center_vertical"

  • layout_gravity不适合RelativeLayout.你应该使用keep android:layout_centerVertical ="true"并确保android:layout_height = fill_parent (5认同)

abr*_*ggs 22

将此xml属性添加到您希望在其父级中居的子级:

android:layout_centerInParent="true"
Run Code Online (Sandbox Code Playgroud)

这将使其垂直/水平居中.

  • 父母必须是一个`RelativeLayout`才能工作. (6认同)

Paw*_*wan 11

更改android:layout_height="wrap_content"android:layout_height="fill_parent"RelativeLayout并添加android:layout_centerVertical="true"到TextView,它将像魅力一样工作.


Jer*_*rth 5

你可以使用一个LinearLayoutlayout_widthlayout_height设置为fill_parent和重力设置为vertical_center

像这样:

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

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="horizontal">

        <EditText 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/input_field"
            android:gravity="left"
            android:layout_weight="1"
            android:text="Left Aligned"/>
               <EditText  
            android:id="@+id/input_field"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_weight="1"
            android:text="Right Aligned"/>
    </LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)