LinearLayout里面的RelativeLayout?

问题描述 投票:8回答:3

我想知道我在这里做错了什么,为什么在RelativeLayout中围绕这些按钮会导致错误?我没有很多编辑布局,我不能只是坚持相对或线性布局吗?

如果我没有将布局中的按钮环绕在一起,它们就会出现在彼此之下,我只是想尝试将它们水平放在彼此旁边。

我认为我完成整个布局的方式很糟糕,因为垂直方向看起来非常紧张。

<?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>

android layout android-linearlayout relativelayout
3个回答
7
投票

正如其他人已经指出的那样,你需要为你的layout_width定义一个layout_heightRelativeLayout。这应该可以解决您的错误,除非您有其他问题。但我认为值得注意的是DOCS对布局的看法

RelativeLayout是一个非常强大的实用程序,用于设计用户界面,因为它可以消除嵌套视图组并保持布局层次结构平整,从而提高性能。如果您发现自己使用了多个嵌套的LinearLayout组,则可以使用单个RelativeLayout替换它们。

你有许多嵌套的LinearLayouts,所以你可以考虑使用RelativeLayout以获得更好的性能和可读性。你也可以在嵌套的android:orientation="horizontal"中使用LinearLayout来让你的按钮彼此相邻。但是,再一次,RelativeLayout在你的情况下可能会更好,而不是拥有所有嵌套布局。


4
投票

你的relativeLayout没有大小。

为其定义layout_height和layout_width


3
投票
        <RelativeLayout 
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
© www.soinside.com 2019 - 2024. All rights reserved.