0

AutoCompleteTextViewがあり、ユーザーは1行の検索で書き込む必要があります。つまり、改行は許可されていません。を使用android:singleLine="true"すると、これが正しく機能します。

ただし、他のテキストが入力されていないときに表示するヒントも設定したいと思います。このテキストには複数の行が必要です。私の問題は、Android 4以降では、ヒントが数行に折り返されていないことです。ただし、Android 2.3では、コンテンツが折り返され、複数の行が表示されます。ユーザーはまだ複数の行を入力できないので、これが私が望む方法です。

たとえばandroid:maxLines="2"、ユーザーが検索時に改行を挿入できるため、使用しても役に立ちません。私も試してみましたがandroid:scrollHorizontally="false"、成功android:ellipsize="none"しませんでした。android:layout_weight=1

複数の行を折り返すためのヒントを取得し、Android 4を使用しているユーザーからの1行のみを受け入れる方法についてのアイデアはありますか?以下は私が現在使用しているコードです。

    <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を追加して、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!
    }
});
于 2012-09-30T20:34:14.647 に答える