【问题标题】:Prevent EditText from going to new line when 'Space' is tapped当点击“空格”时,防止 EditText 进入新行
【发布时间】:2017-11-23 02:38:30
【问题描述】:

我想要一个 EditText,它是多行和一个句子的第一个字母作为大写。我正在使用:

<EditText
        android:id="@+id/editText2"
        android:layout_width="300dp"
        android:layout_height="150dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="32dp"
        android:layout_marginTop="67dp"
        android:background="#ddebed"
        android:ems="10"
        android:inputType="textMultiLine|textCapSentences"
        android:singleLine="false"
        android:text="@string/same" />

我可以同时实现:MultiLine 和 CapSentences。 但是,当我在一个单词后按“空格键”时,它会换行。 如何预防?

android:text="@string/same" 指的是&lt;string name="same"&gt;\n \n \n Regards: Principal&lt;/string&gt; 所以,问题是由 \n 引起的。 我想要一个 EditText,它在下一行中有一些已经输入的文本,并允许用户在前 'n' 行中输入一些文本。

【问题讨论】:

  • 此代码按预期工作。您没有从代码中进行任何更改以收听文本更改吗??
  • 我肯定不会在 Java 或其他任何地方使用 EditText。
  • 请检查更新的问题。

标签: android android-layout android-edittext


【解决方案1】:

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

您的编辑文本应如下所示。

<EditText
        android:id="@+id/editText2"
        android:layout_width="300dp"
        android:layout_height="150dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="32dp"
        android:layout_marginTop="67dp"
        android:background="#ddebed"
        android:ems="10"
        android:maxLines="1"
        android:inputType="text|textCapSentences"
        android:text="@string/same" />

如果您正在寻找多行,您可以将编辑文本编辑为

android:inputType="text|textMultiLine|textCapSentences"

同样可以增加android:maxLines="2"

我已经检查过了。您可以使用上面的代码并进行以下一些修改。

EditText editText = (EditText)findViewById(R.id.editText2);
editText.setSelection(0);

它会将您的光标移动到位置 0。同时尝试增加 maxlines 值。我已经检查过了,它工作正常。

【讨论】:

  • 试过了,虽然按下空格时它不会带我到新行。但我想保留它 MultiLine ,亲爱的 :) 你读过这个问题了吗?
  • 我已经编辑了我的答案。你可以看看亲爱的:)
  • 另外,如果你提到最大长度会更好,所以每当它达到最大长度时,它就会进入下一行。您可以将android:maxLength="21" 属性添加到您的编辑文本中。
  • 我找到了问题所在。 android:text="@string/same" 指的是&lt;string name="same"&gt;\n \n \n Regards: Principal&lt;/string&gt;
  • 我如何实现这个,在下一行保留这个文本?
【解决方案2】:

尝试在 xml 中使用这个标签。

android:singleLine="true"

【讨论】:

  • 我认为它将停止多行。
  • 但我想保留它多行,而不是空格键上的多行。无论如何,它不起作用:(还有其他想法吗?
【解决方案3】:

您可以在 \n 之前添加两个隐藏空格。 添加隐藏空间:Alt + 0160(数字键)。 因此,当用户输入内容时,隐藏空间将继续移动,用户文本将无法到达 \n。

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2017-09-19
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多