如何自动换行单行AutoCompleteTextView的提示?

时间:2012-09-30 20:16:35

标签: android android-layout textview

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

2 个答案:

答案 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来更改singleLinemaxLines的值:

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!
    }
});