java – Android EditText与word-wrap但没有硬回报

前端之家收集整理的这篇文章主要介绍了java – Android EditText与word-wrap但没有硬回报前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我在EditText小部件上设置SingleLine = true,我得到一个单行编辑控件,不允许用户插入硬返回(单击Enter移动到下一个字段,而不是插入新行).如果我没有设置SingleLine = true,用户可以插入硬返回.

如果我设置layout_height =“wrap_content”,EditText控件将垂直增长以显示所有文本.但是,只有在SingleLine未设置为true时才执行此操作.

所以,我的问题是,是否可以获得单词换行和垂直调整大小,而不允许用户进入硬休息?我想我可以陷入进入的按键,但是我也必须抓住其他方式,他们可能会得到一个(复制/粘贴,不知道还有什么).有没有一个简单的方式来做到这一点只是正确的属性组合?

我喜欢用户可以看到所有文本的单词,与单行编辑控件的水平滚动相比,但我并不希望他们认为可以输入多行文本(而且我不想必须支持它).我想我可以将硬拷贝转换为空格,当我将数据保存到我的数据库,如果我必须(旧版应用程序我同步在PC上的数据不能处理硬回报).

解决方法

我也是在寻找一些东西来做到这一点.我找到的唯一解决方案是扩展EditText如下:
package com.kylemilligan.test;

import android.content.Context;
import android.util.AttributeSet;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.EditText;

public class NoNewlineEditText extends EditText
{

    public NoNewlineEditText(Context context) {
        super(context);
    }

    public NoNewlineEditText(Context context,AttributeSet attributeSet) {
        super(context,attributeSet);
    }    

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs)
    {
        InputConnection connection = super.onCreateInputConnection(outAttrs);
        int imeActions = outAttrs.imeOptions & EditorInfo.IME_MASK_ACTION;
        if ((imeActions & EditorInfo.IME_ACTION_DONE) != 0)
        {
            // clear the existing action
            outAttrs.imeOptions ^= imeActions;
            // set the DONE action
            outAttrs.imeOptions |= EditorInfo.IME_ACTION_DONE;
        }
        if ((outAttrs.imeOptions & EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0)
        {
            outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
        }
        return connection;
    }
}

然后在XML中使用如下:

<com.kylemilligan.test.NoNewlineEditText
            android:id="@+id/noNewLineText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="top|left"
            android:imeOptions="actionDone"
            android:minLines="5" />

希望这可以帮助!

猜你在找的Android相关文章