English 中文(简体)
显示编辑文字的正确正确方向
原标题:correct way to display EditText

我感到困惑和沮丧的是,我无法让我的编辑文本字段在布局中占据合理的空间,而没有明确地告诉它有多少像素。

但我的经验是, 编辑文本完全忽略了布局重量, 或动态地与输入文字一起生长/缩小, 如果我给它一个“ wrap_ content” 的布局重量, 或占用其父版版的大部分空间, 如果我给它一个填充量的话。

那么... 拥有一个编辑文本字段的正确途径是什么? 它占据了它的父版式的一部分( 在我的案例中是线性, 但我很灵活), 这样它就可以在它旁边有一个标签, 并且看起来像:

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

地 铁

最佳回答

您可以做一些不同的事情。 如前所述, 您应该使用 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 个视图, 而相对Layout 有 5 个视图完成类似 。 LinearLayout 兔子有 5 个视图。 线性Layout 兔子有 5 个视图, 但它们更复杂 。 随着您的布局变得更加复杂, 它们的表现会比相对 Layout 差, 特别是当您嵌入它们时 。

问题回答

每行使用水平 < code> LinearLayout 。

在此内, 添加一个水平 < code> LinearLayout 以包绕 < code> TextView 。 给这个 < code> LinearLayoot 20 的 < code>layout_ weight (例如) 。

使用另一个水平 < code> LinearLayoot 来包扎 < code> EditText ,并将 < code> EditText 设置为 < code> 填充 < parent ,但给其外部 < code> LinaearLayoot 80 (或基于 20+80 = 100%的值,如果看到我的意思的话) 。

EDIT: 另外,如果您需要多行才能简化总体布局文件,您可以定义单行布局文件,并将其用作自定义布局条目。

/ 用于编辑文本设置分钟宽度和最长长度

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

这样它总是显示最小宽度, 您的字符不会超过 30 个 。

您需要使用 < code> Layout 。 < code> LinaearLayout 不是适合您的合适的布局。 请查看 < code> TableLayout , 我认为这可以满足您的要求。 请查看 < a href=> http:// developers.android.com/resources/tutographics/views/ hello- tablelayout. html" rel=“ no follow” > TableLayoot 教程 < / a > 。





相关问题
Very basic WPF layout question

How do I get this listbox to be maxiumum size, i.e. fill the group box its in. I ve tried width="auto" Height="auto", width="stretch" Height="stretch" annoyingly at the moment, it dynamicly sizes to ...

How to align the text to top of TextView?

How to align the text to top of a TextView? Equivalent Android API for Swings setInsets()? that is top of text should start be in (0,0) of TextView <?xml version="1.0" encoding="utf-8"?> <...

Centring a flow in Shoes

Can I center the contents of a flow in Shoes? I know that a paragraph can be centred like: para Centred paragrpah , :align=> center However, this does not work with flows: flow(:align=> ...

Overlaying with CSS

I want to load a website in an iframe, and overlay the website with some hints about the website that is shown. However, i got stuck at the point that the website has a variable passive white space at ...

How do you normally make a program look beautiful? [closed]

How can I make an Application look nice and not like an amateur pulled it together? I mean graphic-wise. Is there some sort of book you can read regarding beautiful program layouts, etc? I put this ...

热门标签