开发者

How to center a ImageView vertically in its parent?

My layout design is a TextView with long text and a ImageView to the right of the TextView. I want to center the ImageView in its parent vertically, so I used android:layout_centerVertical="true", but it turned out that the ImageView was aligned to the bottom of its parent. If I don't use layout_centerVertical property, the ImageView will be aligned to the top of its parent. How can I solve this problem? Thanks.

<?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开发者_JS百科"
        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>


Try android:layout_gravity="center_vertical"


Add this xml attribute to the child you wish to center within it's parent:

android:layout_centerInParent="true"

This will center it vertically/horizontally.


change android:layout_height="wrap_content" to android:layout_height="fill_parent" of RelativeLayout and add android:layout_centerVertical="true" to TextView, it will work like charm.


You could use a LinearLayout with layout_width and layout_height set to fill_parent and gravity set to vertical_center.

Something like this:

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


This will put your image to the vertical center of it's parent:

android:layout_gravity="center_vertical"

Demo:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="64dp"
    android:orientation="horizontal">
    <ImageView 
        android:layout_width="48dip"
        android:layout_height="48dip"
        android:src="@drawable/ic_launcher"
        android:contentDescription="Application icon"
        android:layout_gravity="center_vertical" />

</LinearLayout>


Simply add this:

android:layout_gravity="center_vertical|center_horizontal"


I found this question while building in Android Studio 4.2.1 and the solution after some tinkering was:

    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintEnd_toEndOf="parent"

this way, constraining to both sides automatically centers the widget and satisfies the need for constraints. The same is true when centering vertically, by using:

    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜