fifth
fifth

Reputation: 4349

What's the difference between layout_gravity="center_vertical" and layout_centerVertical="true"

I have such layout

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:padding="@dimen/DP_3">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/image"
        android:layout_centerVertical="true"
        android:text="xxx"/>

    <TextView
        android:id="@+id/custom_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"/>

    <TextView
        android:id="@+id/text"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="yyy"/>

</RelativeLayout>

I want all children place vertically inside parent RelativeLayout, however, layout_centerVertical="true" did the trick, but layout_gravity="center_vertical" did nothing. I thought they got same meaning, but not really, did I miss understand sth?

Upvotes: 5

Views: 5510

Answers (2)

MysticMagicϡ
MysticMagicϡ

Reputation: 28823

layout_gravity is the attribute for LinearLayout, which won't work in RelativeLayout.

If you change your RelativeLayout container to LinearLayout, the elements are positioned in center using android:layout_gravity="center_vertical"

Xml:

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

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="xxx" 
        android:padding="5dip"/>

    <TextView
        android:id="@+id/custom_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="dsf" 
        android:padding="5dip"/>

    <TextView
        android:id="@+id/text"
        android:padding="5dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="yyy" />

</LinearLayout>

Output:

enter image description here

Reference Links:

android:layout_gravity

android:layout_centerVertical

Upvotes: 8

Phant&#244;maxx
Phant&#244;maxx

Reputation: 38098

Well, it's easy:

layout_centerVertical="true"

did the trick... in a RelativeLayout

while

layout_gravity="center_vertical"

works in a LinearLayout.

Upvotes: 5

Related Questions