I've been trying all day to get this to work and i think that I can use RelativeLayout
android:layout_weight="0.3"
to place three buttons on the right side of the screen, not centered but 30% down from the top.
Is this possible and if so how do I do it?
The following is my XML that shows three buttons underneath each other but in top right position:
</RelativeLayout>
<LinearLayout
android:id="@+id/rightRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:orientation="vertical"
>
<ImageButton
android:id="@+id/btn_A"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="A"
android:src="@drawable/drawer_1"
android:background="@android:color/transparent"
/>
<ImageButton
android:id="@+id/btn_B"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="B"
android:src="@drawable/drawer_1"
android:background="@android:color/transparent"
android:layout_below="@+id/btn_A"
/>
<ImageButton
android:id="@+id/btn_C"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginTop="10dp"
android:text="C"
android:src="@drawable/drawer_1"
android:background="@android:color/transparent"
android:layout_below="@+id/btn_B"
/>
</LinearLayout>
[UPDATE] Added final working version for people who need it
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/examplegallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:id="@+id/InnerRelativeLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/btn_newpen_drawtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pen"
/>
<EditText
android:id="@+id/etx_addtext_drawtext"
android:layout_width="fill_parent"
android:layout_toLeftOf="@+id/btn_delete_pen"
android:layout_toRightOf="@+id/btn_newpen_drawtext"
android:layout_height="wrap_content"
android:singleLine="true"
android:text=""
/>
<Button
android:id="@+id/btn_delete_pen"
android:layout_toLeftOf="@+id/btn_save_drawtext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Del"
/>
<Button
android:id="@+id/btn_save_drawtext"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="save"
/>
</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rightLinerLayoutL0"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toRightOf="@+id/RelativeLayout1"
android:weightSum="1.0"
android:layout_alignParentRight="true"
android:orientation="vertical"
>
<LinearLayout android:layout_height="0dp"
android:id="@+id/rightLinerLayoutL1"
android:layout_weight="0.15"
android:layout_width="0dp">
</LinearLayout>
<LinearLayout android:layout_height="0dp"
android:orientation="vertical"
android:id="@+id/rightLinerLayoutL2"
android:layout_weight="0.85"
android:layout_width="wrap_content">
<ImageButton android:text="Button_A"
android:background="@android:color/transparent"
android:layout_height="wrap_content"
android:id="@+id/btn_A"
android:layout_width="wrap_content"
android:layout_gravity="right"
android:src="@drawable/drawer"
android:onClick="btnAListener">
</ImageButton>
<ImageButton android:text="Button_B"
android:background="@android:color/transparent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:id="@+id/btn_B"
android:layout_width="wrap_content"
android:layout_gravity="right"
android:src="@drawable/drawer"
android:onClick="btnBListener">
</ImageButton>
<ImageButton android:text="Button_C"
android:background="@android:color/transparent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:id="@+id/btn_C"
android:layout_width="wrap_content"
android:layout_gravity="right"
android:src="@drawable/drawer"
android:onClick="btnCListener">
</ImageButton>
</LinearLayout>
</LinearLayout >
</RelativeLayout>
Note: For better performance and tooling support, you should instead build your layout with ConstraintLayout.
LinearLayout is less used as compared to RelativeLayout. RelativeLayout is used more in applications. We can use LinearLayout inside RelativeLayout. We can also use RelativeLayout as a Child of LinearLayout.
Layout Weight This attribute assigns an "importance" value to a view in terms of how much space it should occupy on the screen. A larger weight value allows it to expand to fill any remaining space in the parent view.
Stack 2 LinearLayout (L1, L2) sections with weights of 0.3 and 0.7 (and heights of 0dp) inside a LinearLayout (L0) with vertical orientation and total weight of 1.0. Put your buttons in the 0.7 weighted layout (L2). That will give you your spacing of 30% above the buttons.
You can then place the containing LinearLayout (L0) inside a RelativeLayout (R0) and place L0 relative to the right of the parent (R0), which will position the entire thing on the right side of the screen.
Edit: My version is pretty much same as Milde in end, except using a root of RelativeLayout
so I could put the layout_alignParentRight="true"
to ensure it's flush to the right. The only sticking point I found was ensuring your first LinearLayout has height of fill_parent
so that your spacer really is 30% of screen.
<?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="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="wrap_content" android:weightSum="1.0" android:layout_alignParentRight="true">
<LinearLayout android:layout_weight="0.3" android:layout_height="0dp" android:layout_width="0dp" />
<LinearLayout android:layout_weight="0.7" android:layout_height="0dp" android:layout_width="wrap_content" android:orientation="vertical">
<Button android:text="Button 1" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:text="Button 2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:text="Button 3" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Try this:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rightLinerLayoutL0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<LinearLayout android:id="@+id/rightLinerLayoutL1" android:layout_weight="0.3" android:layout_width="fill_parent">
</LinearLayout>
<LinearLayout android:orientation="vertical" android:id="@+id/rightLinerLayoutL2" android:layout_weight="0.7" android:layout_width="fill_parent">
<Button android:text="Button_A" android:layout_height="wrap_content" android:id="@+id/btn_A" android:layout_width="wrap_content" android:layout_gravity="right"></Button>
<Button android:text="Button_B" android:layout_height="wrap_content" android:id="@+id/btn_B" android:layout_width="wrap_content" android:layout_gravity="right"></Button>
<Button android:text="Button_C" android:layout_height="wrap_content" android:id="@+id/btn_C" android:layout_width="wrap_content" android:layout_gravity="right"></Button>
</LinearLayout>
</LinearLayout >
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With