Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - How do I position views in an offset relative to the center/top/bottom (etc.) of their parent?

I have a RelativeLayout with views aligned relative to it (their parent), using (e.g.):

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
textView.setLayoutParams(layoutParams);

and now I wonder, how can I position the View relative to the bottom of its parent, but at an offset (e.g. 100 pixels above the bottom, 20 pixels from the left, etc.), or similarly with the center (30 pixels under the center)?

schematic image of the necessary layout

I've tried setting the margins of the View (e.g.):

layoutParams.setMargins(140, 0, 0, 0);

before applying it to the textView, but that didn't work.

It seems like an extremely useful way to align views for various screen sizes.

It's important for me to achieve this in code, without using xmls.

Thanks!

like image 839
DannyA Avatar asked Oct 25 '11 10:10

DannyA


1 Answers

you have 2 ways, the easies is using a anchor empty view positioned at the center

<View
    android:id="@+id/anchor"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_centerInParent="true" />

<TextView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/anchor"
    android:layout_marginBottom="20dp"
    android:text="hello world!"/>

Or you can center your view and use pading por positioning (you must double the padding used because it overflows below the center of the screen)

 <TextView
     android:id="@+id/imageView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerInParent="true"
     android:paddingBottom="40dp"
     android:text="hello world!"/>
like image 87
Jokin Avatar answered Oct 19 '22 18:10

Jokin