【问题标题】:How to set an EditText's initial height while allowing it to expand when overflows如何设置 EditText 的初始高度,同时允许它在溢出时扩展
【发布时间】:2016-09-13 20:57:27
【问题描述】:

我目前正在开发一个 Android 应用程序,但在使用 EditText 时遇到了一些问题。

我想创建一个带有空字符串的 editText,其高度等于 1 行或更多行并保持该高度,但当文本开始溢出到当前大小以下时允许它增长。

我尝试了几件事:

  1. 如果我将 Edittext 的大小设置为某个值,它就不会增长...前面的行只是上升并变得不可见

  2. 当我不设置大小并使用默认高度时,edittext 总是以两行的高度开始,而不是 1 行。

我该如何解决这个问题?

【问题讨论】:

    标签: android android-edittext


    【解决方案1】:

    还有其他人对此或材料设计中的 TextInputEditText 有疑问吗?即使在设置显式 android:textSize android:minLinesandroid:minHeight 时,似乎 TextInputEditText 的内部填充也会自动调整。您仍然必须明确设置填充。

    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    >
        <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:inputType="textMultiLine"
            android:minLines="1"
            android:minHeight="35dp"
    
            android:paddingHorizontal="16dp"
            android:paddingVertical="0dp"/> 
    
            <!-- /\ Add the two lines above /\ -->
    
    </com.google.android.material.textfield.TextInputLayout>
    

    【讨论】:

      【解决方案2】:

      如何使用这些选项?

      android:maxHeight="100dip"
      android:minHeight="40dip"
      

      MaxHeight 将强制 EditText 的高度不超过 100dip。

      MinHeight 将强制您的 EditText 的最小高度为 40dip。

      示例)

      <EditText
          android:id="@+id/somethingEditText"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:minHeight="56dip"
          android:maxHeight="200dip"
          android:minLines="1" />
      

      此代码将强制您的 EditTex 的高度范围为 '56dip ~ 200dip'

      【讨论】:

        【解决方案3】:

        您可以使用edittext的minLines属性设置最小行数,也可以使用高度作为换行内容以使其可扩展。

        <EditText 
        android:width = "match_parent"
        android:height= "wrap_content"
        android:minLines="1"/>
        

        【讨论】:

          【解决方案4】:

          您可以尝试使用应随文本扩展的换行内容

          <EditText 
          android:width = "match_parent"
          android:height= "wrap_content"/>
          

          【讨论】:

          • 是的,但是使用换行内容创建一个带有空字符串的editText总是会创建一个高度为两行的editText。我无法将其降低到 1 行高...
          • 发生了其他事情,所以它不应该创建 2 行,我刚刚测试过,它只有 1 行高
          • 谢谢,我想我应该找出可能还有什么问题
          • 在这里发布你的代码,我们可以看看有没有什么奇怪的地方
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-17
          • 2015-09-21
          • 1970-01-01
          • 1970-01-01
          • 2020-04-19
          • 2014-05-10
          相关资源
          最近更新 更多