9

I was wondering what I am doing wrong here, why does surrounding these buttons in a RelativeLayout cause an error? I haven't edited layouts much, can I not just stick in a Relative or Linear layout like that?

If I don't surround the buttons in a layout they appear beneath each other, I am just trying to experiment in having them beside each other horizontally.

I think the way I have done this whole layout is bad because vertically it looks quite squished.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >


   <LinearLayout android:id="@+id/topButtons" 
    android:layout_margin="4dip"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <Button android:id="@+id/deviceConnect"
        android:layout_margin="8dip"
        android:layout_weight="3"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:text="Connect2"/>
    <LinearLayout android:orientation="vertical"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <LinearLayout android:orientation="horizontal"
            android:layout_margin="8dip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView android:text="Connected Adapter:"
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <Spinner android:id="@+id/deviceSpinner"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="true"/>
            <TextView android:id="@+id/currentSettings" 
                android:layout_marginLeft="8dip"
                android:text="Current Settings: Not Connected"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"/>
        </LinearLayout>
        <LinearLayout android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <LinearLayout android:orientation="horizontal"
                android:layout_margin="8dip"
                android:layout_weight="1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
                <TextView android:text="Baud:"
                    android:layout_gravity="center_vertical"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <Spinner android:id="@+id/baudSpinner"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:drawSelectorOnTop="true"/>
            </LinearLayout>
            <LinearLayout android:orientation="horizontal"
                android:layout_margin="8dip"
                android:layout_weight="1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
                <TextView android:text="Data:"
                    android:layout_gravity="center_vertical"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <Spinner android:id="@+id/dataSpinner"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:drawSelectorOnTop="true"/>
            </LinearLayout>
            <LinearLayout android:orientation="horizontal"
                android:layout_margin="8dip"
                android:layout_weight="1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
                <TextView android:text="Parity:"
                    android:layout_gravity="center_vertical"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <Spinner android:id="@+id/paritySpinner"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:drawSelectorOnTop="true"/>
            </LinearLayout>
            <LinearLayout android:orientation="horizontal"
                android:layout_margin="8dip"
                android:layout_weight="1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
                <TextView android:text="Stop:"
                    android:layout_gravity="center_vertical"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
                <Spinner android:id="@+id/stopSpinner"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:drawSelectorOnTop="true"/>
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>
    <Button android:id="@+id/updateSettings"
        android:layout_margin="8dip"
        android:layout_weight="3"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:text="Update\nSettings"/>
</LinearLayout>
<RelativeLayout>
   <Button android:id="@+id/Command"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Command"/> 

   <Button android:id="@+id/Command"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Command"/> 

   <Button android:id="@+id/Command"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Command"/> 

   <Button android:id="@+id/Command"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Command"/> 

   <Button android:id="@+id/Command"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test Command"/> 
    </RelativeLayout>

<jackpal.androidterm.emulatorview.EmulatorView
    android:id="@+id/emulatorView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:focusable="true"
    android:focusableInTouchMode="true"

    />

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/term_entry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true"
        android:imeOptions="actionNone|flagNoExtractUi"
        android:inputType="text|textImeMultiLine" />

    <Button
        android:id="@+id/term_entry_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:text="@string/entry_send" />

</LinearLayout>

Veger
  • 37,240
  • 11
  • 105
  • 116
Paul
  • 5,756
  • 6
  • 48
  • 78

3 Answers3

9

As others have pointed out already, you need to define a layout_width and layout_height for your RelativeLayout. This should fix your error, unless there are other issues you have. But I thought it was worth noting what the DOCS say about layouts

A RelativeLayout is a very powerful utility for designing a user interface because it can eliminate nested view groups and keep your layout hierarchy flat, which improves performance. If you find yourself using several nested LinearLayout groups, you may be able to replace them with a single RelativeLayout.

You have many nested LinearLayouts so you may consider using a RelativeLayout for better performance and readability. You can also use android:orientation="horizontal" in a nested LinearLayout to get your buttons next to each other. But, again, a RelativeLayout may be better in your situation instead of having all of the nested layouts.

codeMagic
  • 44,549
  • 13
  • 77
  • 93
  • Thanks what a silly error oops, I may make it all a RelativeLayout as a future improvement, it seems like a lot of fiddling with it to get it looking the same. – Paul Jan 08 '13 at 14:39
  • 1
    You're welcome. Depending on what this program is, it may not be worth changing everything now. If it is just something you're playing with and not going to really use or improve on then I wouldn't worry about it maybe. But if this is going to be a big program then changing the layouts to improve speed and readability could help you tremendously in the future. Good Luck! – codeMagic Jan 08 '13 at 14:46
4

Your relativeLayout has no size.

Define layout_height and layout_width to it

noni
  • 2,927
  • 19
  • 18
4
        <RelativeLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
Gridtestmail
  • 1,459
  • 9
  • 10