我正在尝试设计一个布局,但我想以正确的方式完成它。
截至目前,我将此作为我的布局(这是一种登录表单):
<?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>
这是输出:
它按预期工作但它在第29行(第3个LinearLayout)上给了我This LinearLayout layout or its LinearLayout parent is useless
。
实现我想要的正确方法是什么?
谢谢!
答案 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>
答案 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!