0

我很困惑和沮丧,因为我无法让我的 EditText 字段在布局中占用合理数量的空间,而无需明确告诉它有多少像素。

我*确定我遗漏了一些明显的东西,但我的经验是 EditText 完全忽略 layout_weight 并且如果我给它一个 layout_weight 为“wrap_content”或占用大部分如果我给它一个 fill_parent 的权重,它的父布局中的空间。

那么......拥有占据其父布局的某些部分的 EditText 字段的正确路径是什么(在我的情况下是线性的,但我很灵活),以便它旁边可以有一个标签,看起来像:

Name: [ EDIT TEXT HERE   ]
Phone:[ EDIT TEXT HERE   ]

等等

TIA

4

4 回答 4

2

你可以做几件不同的事情。如前所述,您应该使用 dp 而不是像素进行布局。使用 dp 可以让您的视图按屏幕的物理尺寸而不是分辨率进行缩放。

这是一个指定编辑框出现在每个标签右侧并占据屏幕其余部分的示例:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/name_label"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:text="Name:" />
    <TextView
        android:id="@+id/phone_label"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:layout_below="@id/name_label"
        android:text="Phone:" />
    <EditText
        android:id="@+id/name_text"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_toRightOf="@id/name_label" />
    <EditText
        android:id="@+id/phone_text"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_toRightOf="@id/phone_label"
        android:layout_below="@id/name_text" />

</RelativeLayout>

下面是一个使用权重的 LinearLayout 示例:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp" 
        android:orientation="horizontal"> 
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent" 
            android:text="Name:" 
            android:layout_weight="1"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="5"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp" 
        android:orientation="horizontal"> 
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent" 
            android:text="Phone:" 
            android:layout_weight="1"/>
        <EditText
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="5"/>
    </LinearLayout>

</LinearLayout>

请注意,LinearLayout 有 7 个视图,而 RelativeLayout 用 5 个视图完成类似的操作。LinearLayouts 很方便,但它们更复杂。随着您的布局变得越来越复杂,它们的性能将比相对布局更差,尤其是当您嵌套它们时。

于 2012-05-25T21:38:16.523 回答
1

对于每一行,使用一个水平LinearLayout.

在其中,添加一个水平线LinearLayout来“包裹” TextView. 给出20LinearLayout的 a layout_weight(例如)。

使用另一个水平线LinearLayout“包裹”EditText并将其设置EditTextfill_parent但将其外部LinearLayouta设为layout_weight80(或任何基于 20+80 = 100% 的值,如果你明白我的意思的话)。

编辑:此外,如果您需要多行,那么为了简化整体布局文件,您可以定义一个“单行”布局文件并将其用作自定义布局条目。

于 2012-05-25T21:31:51.257 回答
0

//为您的edittext设置最小宽度和最大长度

android:minWidth="40"
android:maxLength="30"
android:layout_width="wrap_content"

这样它将始终显示最小宽度,并且您的字符不会超过 30。

于 2012-05-25T21:19:50.103 回答
0

您需要使用Layout. LinearLayout不是适合您的目的的布局。看看TableLayout,我认为这可能会满足您的要求。看看TableLayout 教程

于 2012-05-25T21:28:07.200 回答