设计布局

时间:2012-09-24 09:33:21

标签: android android-layout

我正在尝试设计一个布局,但我想以正确的方式完成它。

截至目前,我将此作为我的布局(这是一种登录表单):

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


    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/color_header"
        android:padding="10dp" >

        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:typeface="sans"
            android:textStyle="bold"
            android:text="@string/app_name"/>
    </TableRow>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical">

        <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center">

            <TextView
                android:id="@+id/txtUser"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/login_user"
                android:typeface="sans"
                android:textAppearance="@android:style/TextAppearance.Medium" />

            <EditText
                android:id="@+id/etUser"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text" >

                <requestFocus />
            </EditText>

            <TextView
                android:id="@+id/txtPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/login_password"
                android:typeface="sans"
                android:textAppearance="@android:style/TextAppearance.Medium" />

            <EditText
                android:id="@+id/etPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPassword" />

            <CheckBox
                android:id="@+id/cbRemember"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:typeface="sans"
                android:text="@string/login_remember" />

            <Button
                android:id="@+id/btnLogin"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/login_login" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

这是输出:

enter image description here

它按预期工作但它在第29行(第3个LinearLayout)上给了我This LinearLayout layout or its LinearLayout parent is useless

实现我想要的正确方法是什么?

谢谢!

4 个答案:

答案 0 :(得分:2)

通过警告,系统只是想说你有空间来优化你的布局代码。

注意警告是一种好习惯。

从下面的LineraLayout,你必须删除任何线性布局。

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="vertical">

        <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center">

答案 1 :(得分:1)

使用tablelayout

  <?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"    
android:layout_width="fill_parent"
android:layout_height="fill_parent"       
android:gravity="center_vertical"   
android:stretchColumns="1">

<TableRow
    android:id="@+id/row1"
    android:layout_marginTop="25dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/username"
        android:layout_marginLeft="50dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="2dp"                
        android:text="user_name"           
        android:textSize="16sp" />
</TableRow>

<TableRow
    android:id="@+id/row2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <EditText
        android:inputType="text"
        android:id="@+id/editUsername"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_weight="2"
        android:singleLine="true"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="2dip"
        android:layout_marginRight="50dp"   
        android:padding="10dp"/>
</TableRow>

<TableRow
    android:id="@+id/row5"          
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
    <CheckBox
        android:id="@+id/remember"
        android:layout_width="wrap_content"      
        android:layout_height="wrap_content"            
        android:button="@drawable/checkbox_selector"      
        android:layout_marginLeft="52dp"
        android:padding="8dp" 
        android:textSize="12sp"
        android:text="remember"
        />
</TableRow>
<TableRow
    android:id="@+id/row6"            
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/login"
        android:layout_width="100dp"
        android:layout_height="35dp"
        android:text="login"                   
        android:textStyle="bold"
        android:layout_marginLeft="102dp"
         />
</TableRow>

答案 2 :(得分:1)

试试这个:     

<TableRow
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/color_header"
    android:padding="10dp" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textColor="@android:color/white"
        android:textStyle="bold"
        android:typeface="sans" />
</TableRow>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txtUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/login_user"
        android:textAppearance="@android:style/TextAppearance.Medium"
        android:typeface="sans" />

    <EditText
        android:id="@+id/etUser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="text" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/txtPassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/login_password"
        android:textAppearance="@android:style/TextAppearance.Medium"
        android:typeface="sans" />

    <EditText
        android:id="@+id/etPassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPassword" />

    <CheckBox
        android:id="@+id/cbRemember"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/login_remember"
        android:typeface="sans" />

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/login_login" />
</LinearLayout>

enter image description here

答案 3 :(得分:0)

在围绕@Siddharth Lele评论链接进行挖掘后,我最终得到了这个可以按照我想要的方式工作的布局,并且它的优点是它可以兼容较小的设备和更大的设备。

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

    <TableRow
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/color_header"
        android:padding="10dp" >

        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/white"
            android:typeface="sans"
            android:textStyle="bold"
            android:text="@string/app_name"/>
    </TableRow>

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:layout_gravity="center_vertical|center_horizontal"
                android:gravity="center">

            <TextView
                android:id="@+id/txtUser"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/login_user"
                android:typeface="sans"
                android:textAppearance="@android:style/TextAppearance.Medium" />

            <EditText
                android:id="@+id/etUser"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="text" >

                <requestFocus />
            </EditText>

            <TextView
                android:id="@+id/txtPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/login_password"
                android:typeface="sans"
                android:textAppearance="@android:style/TextAppearance.Medium" />

            <EditText
                android:id="@+id/etPassword"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPassword" />

            <CheckBox
                android:id="@+id/cbRemember"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:typeface="sans"
                android:text="@string/login_remember" />

            <Button
                android:id="@+id/btnLogin"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/login_login" />

        </LinearLayout>

    </ScrollView>

</LinearLayout>

谢谢大家的回答,我当然最终会从他们那里学到一些东西,因此,我会给@Siddharth Lele的每个答案和评论+1!