Android linear orientation right and right

This is what I have:

enter image description here

<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#FFFFFF"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:background="#E30000" android:layout_gravity="center_horizontal|center_vertical" android:gravity="center_horizontal|center_vertical"> <TextView android:id="@+id/TextView00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFF" android:textSize="20px" android:textStyle="bold" android:text="Something" android:gravity="right|center_vertical" /> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:gravity="right|center_vertical" android:layout_gravity="center_vertical" android:background="#E30000"> <Button android:id="@+id/btnCalls" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/icon" android:gravity="right|center_vertical" /> </LinearLayout> </LinearLayout> </LinearLayout> 

And I want this:

enter image description here

Thus, the horizontal center aligns the text and the vertical center aligns the button.

What am I missing? I have not tried RelativeLayout, and I would prefer LinearLayout to work on this.

+6
source share
9 answers

try this one

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#FFFFFF"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:background="#E30000" android:layout_gravity="center_horizontal|center_vertical" android:gravity="center_vertical"> <TextView android:id="@+id/TextView00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFF" android:textSize="20px" android:textStyle="bold" android:text="Something" android:layout_weight="1" android:gravity="center"/> <LinearLayout android:id="@+id/LinearLayout01" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:gravity="right|center_vertical" android:layout_gravity="center_vertical" android:background="#E30000" android:layout_width="wrap_content"> <Button android:id="@+id/btnCalls" android:layout_width="wrap_content" android:drawableLeft="@drawable/icon" android:gravity="right|center_vertical" android:layout_height="wrap_content" android:layout_margin="5dip"/> </LinearLayout> </LinearLayout> </LinearLayout> 
+10
source
 android:gravity="right|center_vertical" 

aligns your TextView to the right. What about center_horizontal?

And your LinearLayouts have the same identifier, if there is no more code, then I would delete one of them.

+22
source

I found that none of the answers work exactly as the OP intended, but the RelativeLayout solution was the closest. Except that the TextView was not centered. But, with layout_centerInParent = true, it works like a charm:

 <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFF" android:textSize="20px" android:textStyle="bold" android:text="Something" android:layout_centerInParent="true" /> <Button android:id="@+id/btnCalls" android:drawableLeft="@drawable/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true"/> </RelativeLayout> 
+2
source

Try adding an empty view inside the horizontal LinearLayout between the element that you want to see on the left and the element that you want to see correctly, for example:

  <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> <View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 
+1
source

you used android:gravity="right|center_vertical" in your text view. Use android:gravity="center" .

0
source

I think gravity means the state of things inside the component (for textview, this means the text you specified) in the component, where layout_gravity means the position of the component itself in the entire layout. So that...

Try using:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="#FFFFFF" > <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:background="#E30000" android:layout_gravity="right" android:gravity="center_vertical|right" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:gravity="center_vertical|center" android:layout_weight="0.9" > <TextView android:id="@+id/TextView00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFF" android:textSize="20px" android:textStyle="bold" android:text="Something" android:gravity="center_horizontal" android:layout_gravity="center_horizontal|center_vertical" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:gravity="center_vertical|right" android:paddingTop="5dip" android:layout_weight="0.1" > <Button android:id="@+id/btnCalls" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/icon" android:layout_gravity="center_vertical" android:gravity="center" /> </LinearLayout> </LinearLayout> </LinearLayout> 
0
source

determine layout weight for TextView and LinearLayout

set android:layout_weight="1" in a TextView

set android:layout_weight="0" to LinearLayout

and also change layout_width="wrap_content" to LinearLayout and set layout_gravity="center" in the TextView

0
source

Just use RelativeLayout and wallaaa !!!

 <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/TextView00" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFFFFF" android:textSize="20px" android:textStyle="bold" android:text="Something" android:gravity="center" /> <Button android:id="@+id/btnCalls" android:drawableLeft="@drawable/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true"/> </RelativeLayout> 
0
source

The solution for this is Android: gravity = "center_vertical"

Usually you also need to take care of your parental position to make sure that it works.

0
source

Source: https://habr.com/ru/post/898734/


All Articles