2012-05-16 28 views
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它不會提供任何東西setFocusable not working

+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請求的焦點。 希望這有助於。

+0

但是當我假設EditText的setFocusable(false)作爲屏幕獲取加載時,它會自動獲得第一個可聚焦視圖,即實際的EditText並彈出鍵盤.....它沒有工作 – Housefly

+0

@ Archie.bpgc你似乎不明白他的答案 –

+0

你能解釋一下,我錯誤地理解了它......謝謝 – Housefly

4

更好的答案是:

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

,你不必創建 '假' 的焦點。