【问题标题】:How do I prevent an EditText from resizing itself when the user is typing?如何防止 EditText 在用户键入时自行调整大小?
【发布时间】:2010-11-27 09:13:11
【问题描述】:

我有一个EditText 和一个Button 在同一水平线上彼此相邻设置。它看起来很棒,除了当用户输入大量文本时,EditText 被调整大小,Button 被压扁。

我将EditTextButton 都设置为layout_width="wrap_content""fill_parent" 弄乱了布局,如果我不需要,我不想使用绝对尺寸 - 现在它在横向和纵向上看起来都很棒,我只是不希望 EditText调整大小。

我的布局:

<TableLayout
    android:id="@+id/homelayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableRow>
        <TextView
            android:id="@+id/labelartist"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Find artists:" />
    </TableRow>
    <TableRow>
        <EditText
            android:id="@+id/entryartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="6"
            android:background="@android:drawable/editbox_background"
            android:editable="true"
            android:padding="5px"
            android:singleLine="true" />
        <Button
            android:id="@+id/okartist"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="10dip"
            android:layout_weight="1"
            android:text="Search" />
    </TableRow>

</TableLayout>

【问题讨论】:

    标签: android layout android-edittext


    【解决方案1】:

    供 EditText 使用

    android:layout_width="0dp" - not required but preferred.
    android:layout_weight="1"
    

    对于按钮不要指定android:layout_weight

    【讨论】:

    • 谢谢 - 成功了! “0dp”对宽度表示什么?它应该占用所有可用空间吗?
    • 不要忘记在TableLayout 中删除(如果存在)android:stretchColumns="x",其中“x”是包含您不想自动调整大小的EditText 的列位置。
    • 按钮的重量不会改变任何东西,但宽度 0dp 会改变。谢谢
    • 最后我有一个活生生的例子为什么我们应该使用 0dp 而不是包装内容
    【解决方案2】:

    我所做的是在活动的 onCreate 中,首先测量 EditText,然后应用它的 maxWidth。

    您可以使用类似于以下的代码来执行此操作:

    EditText someedittext = (EditText)findViewById(R.id.sometextview);
    someedittext.setMaxWidth(someedittext.getWidth());
    

    【讨论】:

      【解决方案3】:

      EditText 一个maxWidth。这应该会阻止它调整超出您提供的宽度的大小。此外,如果您希望它包含在 1 行中,请将 maxLines 设置也设置为 1。

      【讨论】:

      • 谢谢 - 我真的不想硬编码一个特定的 maxWidth,因为它对于不同的方向或屏幕尺寸是不一样的。
      【解决方案4】:

      您需要添加 android:imeOptions 来防止这种行为。

      【讨论】:

        【解决方案5】:

        只需使用:

        android:layout_width="fill_parent"
        

        适用于 EditText 和 Button。它也适用于 EditText,但最好同时使用它。

        【讨论】:

          【解决方案6】:

          您可以定义上面显示的编辑文本的大小

          android:minWidth="80dp"
          android:maxWidth="80dp"
          

          android:layout_width="60dp"
          

          您可以应用所需大小的背景图片 但不要忘记定义它的高度和宽度 使用 wrap_content。

            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
          

          【讨论】:

            【解决方案7】:

            我有一个类似的问题,但我无法让上述工作。我所做的是从 EditText 框中获取文本,然后将其格式化为我的屏幕可以处理的最大尺寸。当我将它保存到数据库时,我会将它保存为显示文本和原始文本。

            如果你去to this page我会加长解释。

            【讨论】:

              【解决方案8】:

              正确的做法是将 android:minWidth 和 android:maxWidth 设置为您想要的宽度。这样您就不必调整布局来使用 android:layout_weight。

              例如,如果您希望 EditText 始终为 80 像素密度,无论您键入多少字符,请使用以下命令:

              android:minWidth="80dp"
              android:maxWidth="80dp"
              

              【讨论】:

                【解决方案9】:

                我有确切的查询。但是我在线性布局中有一个 EditText 和一个 Button。 我为 EditText 尝试了 android:layout_weight="1" android:layout_width="0dp" 它工作得非常完美!! 非常感谢!

                【讨论】:

                  【解决方案10】:

                  选择的解决方案有效,但让我补充一点:
                  如果你使用 android:layout_weight="0.15"(值不重要)
                  那么
                  android:layout_width="0dp" 如果LinearLayout 是水平的

                  android:layout_height="0dp",如果 LinearLayout 是垂直的。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2013-07-30
                    • 2010-11-10
                    • 2016-04-05
                    • 1970-01-01
                    • 2020-08-22
                    • 1970-01-01
                    • 2012-11-16
                    • 1970-01-01
                    相关资源
                    最近更新 更多