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 回答