替代singleLine属性(已弃用)TextInputEditText

时间:2016-05-06 19:29:43

标签: android android-edittext

我最近使用了 TextInputEditText ,我得到了singleLine属性为已弃用

的lint错误

<android.support.design.widget.TextInputEditText
            android:id="@+id/my_edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/string_hint_dob"
            android:lines="5"/>
</android.support.design.widget.TextInputLayout>

如下所示进行罢工:

enter image description here

有没有其他替代方法?

7 个答案:

答案 0 :(得分:45)

API Level 3以来已弃用android:singleLine属性。您可以使用android:maxLines来实现相同的行为,这允许您指定任意数量的行。这优于android:singleLine,这限制了您只允许一行。

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:minLines="2"
     android:maxLines="2" /> <!-- can specify arbitrary number of max lines -->

答案 1 :(得分:36)

自API 3以来,

android:singleLine已被弃用,您必须使用android:maxLines(在您的情况下为android:maxLines="1")。

弃用的原因是性能不佳。无论如何,singleLine属性不会被删除,因为它仍然是制作android:maxLines无法产生的效果的唯一方法:

e.g。

如果选择了文本,这将在一行上生成滚动的水平文本。

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:singleLine="true"
     android:ellipsize="end"
     android:scrollHorizontally="true" />

相反,这不会起作用:

<TextView
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:maxLines="1"
     android:ellipsize="end"
     android:scrollHorizontally="true" />

答案 2 :(得分:21)

始终为单行

定义输入类型

ex: from referenceRow in context.SomeTable // We want 8 in the Take and the results to still be 8 after the where. // instead of typing in the value twice (in this example), i wanted to use a constant value here let validateCount = 8 // sub query expression in my example let subQuery = from sub in context.SomeTable where sub.SomeColumn == rowReference.SomeColumn orderby sub.SomeColumn descending select sub // use the sub query, take X amount, apply filter, check to see if Count() is the same as Take() where subQuery.Take(validateCount) // this is where we fail. if we put in the constant 8, we are ok. .Where(x => x.SomeOtherColumn == "Some value") .Count() == validateCount // this is fine select referenceRow

您不需要做任何其他事情。

答案 3 :(得分:5)

在JuanJoséMeleroGómez的提交之后,我想补充更多信息:

如果您尝试将imeAction设置为EditText,例如actionSearch,则设置android:maxLines="1"是不够的。如果您想查看搜索图标,则添加android:inputType="text" 必需

答案 4 :(得分:3)

<EditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:inputType="text"
      android:maxLines="1"
      />

使用android:inputType="text"android:maxLines="1"收集

答案 5 :(得分:0)

如果您想表示需要android:singleLine="true",请将android:maxLines="1"替换为imeOptions,请添加此行android:inputType="number|text ..."

答案 6 :(得分:0)

如果您从不赞成使用的android:singleLine="true"迁移到android:maxLines="1",请不要忘记添加android:ellipsize="end",如果您的字符串对于文本字段来说太长,则要保存三个点符号。