0

我有一个 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" />
4

2 回答 2

3

尝试将 singleLine 更改为:

android:lines="1"

现在禁用“Enter”:

EDIT_TEXT.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            if (keyCode == KeyEvent.KEYCODE_ENTER)
            {
                return true;
            }
            return false;
        }
    });
于 2012-09-30T20:20:29.713 回答
1

尝试添加 OnFocusChangeListener 来更改singleLineor的值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!
    }
});
于 2012-09-30T20:34:14.647 回答