Reputation: 2427
I try to create 2 rows of buttons in android layout.xml file. The first row is left-aligned, the second row is center-aligned.
Here is what I did, but I end up getting 1 row of buttons. Can you please tell me what am I doing wrong?
enter code here
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="bottom|left"
>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="bottom|center"
>
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</FrameLayout>
</pre>
Upvotes: 3
Views: 28538
Reputation: 16209
I would recommend against nesting LinearLayouts like that. It's not productive, very inefficient and hinders the ability of Android layouts to expand in some cases and UI changes.
And besides, it's very CPU intensive! Don't do it and read this:
http://developer.android.com/training/improving-layouts/optimizing-layout.html
Upvotes: 2
Reputation: 1217
You can use Tablelayout for displaying button in the form of rows.
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/root"
android:stretchColumns="*"
android:background="#000000">
<TableRow android:layout_margin="0dip"
android:id="@+id/first_row">
<Button android:id="@+id/button01"
android:layout_width="0dip"
android:layout_weight="1"
android:padding="15dip" />
<Button android:id="@+id/button02"
android:layout_width="0dip"
android:layout_weight="1"
android:padding="15dip" />
<Button android:id="@+id/button03"
android:layout_width="0dip"
android:layout_weight="1"
android:padding="15dip" />
<Button android:id="@+id/button04"
android:layout_width="0dip"
android:layout_weight="1"
android:padding="15dip" />
<Button android:id="@+id/button05"
android:layout_width="0dip"
android:layout_weight="1"
android:padding="15dip" />
</TableRow>
</TableLayout>
Upvotes: 2
Reputation: 2858
You could also use just one RelativeLayout instead of all of your layouts. I've read many reports that RelativeLayout uses less resources than LinearLayout.
Upvotes: 0
Reputation: 7645
FrameLayout is wrong for this task. Use LinearLayout like this:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="bottom|left"
>
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="bottom|center"
>
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout>
for explanation on what FrameLayout is for go here: http://developer.android.com/reference/android/widget/FrameLayout.html
Upvotes: 5