为 EditText 的 HINT 设置多行

Posted

技术标签:

【中文标题】为 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 的 HINT 设置多行的主要内容,如果未能解决你的问题,请参考以下文章

设置不同的android:inputTye属性导致 EditText hint的字体发生改变

自定义ANDROID中EDITTEXT中的HINT文本的大小

android:hint 在 styles.xml 中声明,但仍有警告“您应该为 EditText 提供 `android:hint`”

怎么让 android EditText hint 不换行

自定义ANDROID中EDITTEXT中的HINT文本的大小

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