setFocusable无法正常工作

时间:2012-05-16 06:50:51

标签: android android-edittext

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时它什么也没有提供

2 个答案:

答案 0 :(得分: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来请求焦点。 希望这会有所帮助。

答案 1 :(得分:4)

更好的答案是:

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

并且你不必创造假的&#39;对焦。