我有个可以写入多行文本的EditText,现在想固定每行可输入的字符数,如何使用addTextChangedListener控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有个可以写入多行文本的EditText,现在想固定每行可输入的字符数,如何使用addTextChangedListener控制相关的知识,希望对你有一定的参考价值。

editText = (EditText) findViewById(R.id.edit_text_out);
editText.addTextChangedListener(new TextWatcher()

@Override
public void afterTextChanged(Editable s)
// TODO 自动生成的方法存根



@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
// TODO 自动生成的方法存根



@Override
public void onTextChanged(CharSequence s, int start, int before,
int count)
// TODO 自动生成的方法存根





安卓多行文本框每行仅限制16个字符,多余该字符后 输出回车 换行
该怎么编写?
谢谢!

参考技术A 你这个需求不合理吧……比如你限制输入10个字符,但是屏幕的宽度只能容纳8个,那要怎么办?第9个换行,第11个再换行?追问

目前屏幕宽度足够容纳的字符数量高于我限制的字符数量,所以不会出现你提到的情况。

追答

用户是可以在手机的系统设置里面改字体大小的,而且手机屏幕的宽度不一样,这个不靠谱啊。
如果你坚持这样,看看能不能把sp转换成dp(比如10sp=1dp),然后将EditText的宽度设置为对应的dp试试。

追问

那样字体会变得很大,希望不改变字体大小的情况下使用addTextChangedListener 来实现。

例如下面:我通过手动控制达到这个效果的,每行的字符不能超过最右字符。

追答

我的意思是你算出每个字符的宽度,然后将EditText设置成对应的宽度

为 EditText 的 HINT 设置多行

【中文标题】为 EditText 的 HINT 设置多行【英文标题】:Set multi-line for EditText's HINT 【发布时间】:2015-03-19 14:12:25 【问题描述】:

我知道我可以更改 EditeText 的 Text 的行数,但我也可以更改 EditText 的提示吗?

我在网上找不到解决方案。

感谢您的帮助。

我的代码:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
    inflater.inflate(R.menu.property_search, menu);
    super.onCreateOptionsMenu(menu, inflater);

    final MenuItem searchViewMenuItem = menu.findItem(R.id.action_search);
    mSearchView = (SearchView) searchViewMenuItem.getActionView();
    int searchSrcTextId = getResources().getIdentifier("android:id/search_src_text", null, null);
    EditText searchEditText = (EditText) mSearchView.findViewById(searchSrcTextId);
    searchEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
   searchEditText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
    searchEditText.setHint(getString(R.string.search_hint));

字符串.xml

<string name="search_hint">keyword, location, \nmax price (e.g. 1K, 1M)</string>

我想要的是:

关键字,位置,

最高价格(例如 1K、1M)

【问题讨论】:

发布一些想要的和当前结果的代码和图像.. 你有什么错误吗? 不,没有错误。但只显示单词'关键字,位置,......'。我想要的(在我上面代码的末尾):“关键字,位置,----------新行----- -------- 最高价格(例如 1K、1M)" 【参考方案1】:

没有什么对我有用,但是:

 <EditText
         android:id="@+id/text"
         android:layout_
         android:layout_
         android:inputType="textMultiLine|textLongMessage"
         android:hint="\n"/>

说实话,我不明白为什么.. 但是在 xml 中包含“\n”作为提示就可以了!

现在您可以从 Java 代码中调用 setHint:

searchEditText.setHint(getString(R.string.search_hint));

如果您想允许文本根据房间自动拆分,请从 strings.xml 中删除 \n

<string name="search_hint">keyword, location, max price (e.g. 1K, 1M)</string>

【讨论】:

这应该是标记的答案..我仍然不知道原因,但它正在工作【参考方案2】:

在提示中使用换行符 \n。

喜欢

android:hint="first line of hint \n second line of hint so on.."

在字符串中

<string name="urhint">first line of hint \n second line of hint so on..</string>

android:hint="@string/urhint"

希望它有效..

【讨论】:

确保您将编辑文本高度设置为 wrapcontent...n 请也发布您的 xml【参考方案3】:

难以置信,但确实如此:以编程方式设置长文本而不是在 xml 中设置就可以了。

<TextInputEditText
    android:layout_
    android:layout_
    android:inputType="textMultiLine|textCapSentences|textAutoCorrect"

以编程方式设置文本:

mEditTextRemark.setHint(R.string...);

【讨论】:

【参考方案4】:

试试这个:

字符串.xml

<string name="hint">Hint first line \n Hint second line \n Hint third line</string>

布局.xml

 <EditText
         android:id="@+id/emailText"   
         android:layout_
         android:layout_
         android:background="@drawable/login_edittext_background"
         android:imeOptions="actionNext"
         android:inputType="textEmailAddress"
         android:hint="@string/hint"/>

【讨论】:

不,它不起作用。是不是因为我改变了actionBar的searchView,限制在特定的高度?我通过以下方式动态设置这些变量: 1. searchEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT); 2. searchEditText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);【参考方案5】:

在您的 xml 文件中的 edittext 中设置以下两行

android:inputType="textMultiLine"
android:lines="3"

所以在预览中显示了 3 个多行框

【讨论】:

以上是关于我有个可以写入多行文本的EditText,现在想固定每行可输入的字符数,如何使用addTextChangedListener控制的主要内容,如果未能解决你的问题,请参考以下文章

Android:BottomSheetDialog中的多行文本EditText

如何在多行上获取edittext文本[关闭]

Android使用popWindow弹出一个窗口,这个窗口上有个EditText文本框,现在遇到一个问题

防止在 EditText 上输入键,但仍将文本显示为多行

通过android eclipse的多行edittext [重复]

隐藏在 reyclerview 项目 android 后面的多行 EditText 视图