Centering two text elements vertically in a RelativeLayout

What's happening

I am writing a PopupWindow containing two TextViews, where the second TextView should be centered vertically in the popup, and the first TextView should be directly above it.

The problem is that RelativeLayout seems to process the two TextViews as one element and vertically center their middle. I want the bottom TextView to be center centered and the top above it (hence android:layout_above="@id/first_name" ).

XML layout

Note the clearly unnecessary LinearLayout, because RelativeLayout refused to fill the screen vertically (PopupWindow uses ViewGroup.LayoutParams.MATCH_PARENT ).

 <?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" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <TextView android:id="@+id/first_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" android:singleLine="true" android:text="Christopher" /> <TextView android:id="@+id/lbl_hello" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/first_name" android:gravity="center" android:singleLine="true" android:text="@string/hello" /> </RelativeLayout> </LinearLayout> 

Java Activity

 LayoutInflater inflater = LayoutInflater.from(this); final View popupView = inflater.inflate(R.layout.<fragment name>, <parent object>, false); final PopupWindow pwindow = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, true); pwindow.setTouchable(true); new Handler().postDelayed(new Runnable() { @Override public void run() { pwindow.showAtLocation(popupView, Gravity.CENTER, 0, 0); } }, 100L); 
+1
source share
3 answers

As Sushil said, you can completely remove your LinearLayout . The following fix should work; if so, try deleting the linear layout as well.

The problem here is in android:gravity="center" on RelativeLayout . If you remove this, you can get the desired placement:

 <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > 
+3
source

You can simply remove Linlingayout. Right now, your text view is a child of Relativelayout, which is a child of LinearLayout.

  <?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:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <TextView android:id="@+id/first_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" android:singleLine="true" android:text="Christopher" /> <TextView android:id="@+id/lbl_hello" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@id/first_name" android:gravity="center" android:singleLine="true" android:text="@string/hello" /> </RelativeLayout> 
+1
source

Use this xml:

  <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginLeft="40dp" android:layout_marginRight="40dp" android:layout_marginTop="90dp"> <TextView android:id="@+id/inv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:text="@string/invfam" android:textColor="#f5f5f5" android:textSize="20dp" /> <TextView android:id="@+id/promo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/inv" android:gravity="center" android:layout_marginTop="10dp" android:text="Enjoy an additional 15 AED off your first video consultation. Sign up for a Health at Hand account and you will be credited 30 AED as a new user plus an extra 15 AED! #feel better today" android:textColor="#f5f5f5" android:textSize="14dp" /> </RelativeLayout> 
0
source

All Articles