我有一个AutoCompleteTextView,用户要在单行搜索中写入,即不允许换行。使用android:singleLine="true"
可以使其正常工作。
但是,我还希望设置一个提示,以便在没有输入其他文本时显示,并且此文本确实需要多行。我的问题是,对于Android 4+,提示不包含在几行中。但是,在Android 2.3中,内容会被包装并显示多行。用户仍然无法输入多行,所以这就是我想要的方式。
使用例如android:maxLines="2"
没有帮助,因为这允许用户在搜索时插入换行符。我还尝试了android:scrollHorizontally="false"
和android:ellipsize="none"
以及android:layout_weight=1
但没有成功。
有关如何获取提示以包装多行并仍然只接受来自Android 4用户的单行的任何想法?下面是我目前正在使用的代码。
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:completionThreshold="3"
android:hint="This is the hint to be displayed. It's rather long and doesn't fit in one line"
android:singleLine="true" />
答案 0 :(得分:3)
尝试将singleLine更改为:
android:lines="1"
现在禁用&#34;输入&#34;:
EDIT_TEXT.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_ENTER)
{
return true;
}
return false;
}
});
答案 1 :(得分:1)
尝试添加OnFocusChangeListener来更改singleLine
或maxLines
的值:
autoCompleteTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange (View v, boolean hasFocus) {
// This might do it on its own
((AutoCompleteTextView) v).setSingleLine(hasFocus);
// If setSingleLine() doesn't work try this
AutoCompleteTextView auto = (AutoCompleteTextView) v;
if(hasFocus)
auto.setMaxLines(1);
else
auto.setMaxLines(2); // or more if necessary
// Only keep the one that works, you obviously don't need both!
}
});