1
eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);
        eT.setFocusable(false);

eT.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {

                Log.d("Cliked on edit text", "eT.onClick");
                eT.setFocusable(true);
            }
        });

このコードは、editTextに焦点が当てられていないことを期待して作成しました。これは、画面上のキーパッドがポップアップするためです。これは正常に機能しましたが、editTextをクリックするとフォーカスが移動して、キーパッドがポップアップするようにします。しかし、これは機能しません。editTextをクリックしても何も表示されません。

4

2 に答える 2

17

より良い答えは次のとおりです。

eT.setFocusableInTouchMode(true); eT.setFocusable(true);

「偽の」フォーカスを作成する必要はありません。

于 2016-08-17T09:04:44.280 に答える
4

EditText の上に、「偽の」フォーカスを取得するビューを作成する必要があります。

何かのようなもの :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- Stop auto focussing the EditText -->
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@android:color/transparent"
        android:focusable="true"
        android:focusableInTouchMode="true">
    </LinearLayout>

    <EditText
        android:id="@+id/searchAutoCompleteTextView_feed"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:inputType="text" />

</LinearLayout>

この場合、LinearLayout を使用してフォーカスをリクエストしました。お役に立てれば。

于 2012-05-16T07:01:11.283 に答える