I have the following layout in place
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_weight="1">
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview" android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="13">
<LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1">
<ImageButton android:background="@null" android:id="@+id/back" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/back" android:padding="10dip" />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1">
<ImageButton android:background="@null" android:id="@+id/forward" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/forward" android:padding="10dip" />
</LinearLayout>
</LinearLayout>
<RelativeLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" >
<ImageButton android:background="@null" android:id="@+id/special" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/barcode" android:padding="10dip" android:layout_gravity="right"/>
</RelativeLayout>
</LinearLayout>
</LinearLayout>
For the purpose of this question, I am only concerned about the lower half of the layout. Right now it contains 3 imagebuttons. The first 2, I want right next to each other left aligned. The third one, I want to be aligned to the right side.
As is, the first 2 buttons are where I want them to be, but the 3rd is stubbernly staying left-aligned. How would I make it right aligned.
If you want to use LinearLayout, you can do alignment with
layout_weight
withSpace
element.E.g. following layout places
textView
andtextView2
next to each other andtextView3
will be right-alignedyou can achieve the same effect without
Space
if you would setlayout_weight
totextView2
. It's just that I like things more separated, plus to demonstrateSpace
element.Note that you should (not must though) set
layout_width
explicitly as it will be recalculated according to it's weight anyway (same way you should set height in elements of verticalLinearLayout
). For other layout performance tips see Android Layout Tricks series.This is an example for a RelativeLayout:
With another kind of layout (example LinearLayout) you just simply has to change RelativeLayout for LinearLayout.
The layout is extremely inefficient and bloated. You don't need that many
LinearLayout
s. In fact you don't need anyLinearLayout
at all.Use only one
RelativeLayout
. Like this.You can do all that by using just one
RelativeLayout
(which, btw, don't needandroid:orientation
parameter). So, instead of having aLinearLayout
, containing a bunch of stuff, you can do something like:As you noticed, there are some XML parameters missing. I was just showing the basic parameters you had to put. You can complete the rest.
To support older version Space can be replaced with View as below. Add this view between after left most component and before right most component. This view with weight=1 will stretch and fill the space
Complete sample code is given here. It has has 4 components. Two arrows will be on the right and left side. The Text and Spinner will be in the middle.