2011-08-07 58 views
0

我有一個活動,其中用戶呈現的編輯文本列表。問題是,一旦活動開始,虛擬鍵盤就會立即顯示在第一個編輯文本中。我不希望發生這種情況,因爲在編輯文本之前有一個微調,而且我經常發現彈出鍵盤就會讓用戶忘記前一個微調。與EditText對象的Android問題

下面是相關代碼:

<Spinner 
    android:id="@+id/event_location" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="30px" 
    android:prompt="@string/location_prompt" /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Event Name: " /> 
<EditText 
    android:id="@+id/event_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Activity Type: " /> 
<Spinner 
    android:id="@+id/event_type" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Address: " /> 
<EditText 
    android:id="@+id/event_address" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

摘要:一個EditText活動開始,虛擬鍵盤會自動彈出。我不希望它這樣做,除非用戶按下編輯文本。

感謝您的任何幫助。

回答

2

的EditText上被自動設置爲所以您需要放置android:focusable="false"editText.setFocusable(false)以防止在微調器可見時EditText被聚焦。您也可以嘗試editText.setSelected(false)

1

試着改變你的微調XML這樣的:

<Spinner 
android:layout_marginTop="30px" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:id="@+id/event_location" 
android:prompt="@string/location_prompt"> 
<requestFocus /> 
</Spinner> 

也可以嘗試每個EditText上做:

android:focusable="false" 
android:focusableInTouchMode="false" 

看看這個帖子:Stop EditText from gaining focus at Activity startup

+0

好嗎肯定,我會嘗試了這一點。有沒有辦法讓我可以做到這一點,以便沒有任何提示?即在用戶點擊某物之前什麼都不會彈出。 編輯 - requestFocus沒有改變任何東西。 – JDS

+0

我編輯了我的答案,看到這些幫助。 – pqn

1

這是它的工作對我來說:

  1. 以確保編輯文本不會得到注重啓動:
    在XML中設置的EditText的假的可聚焦屬性:
android:focusable="false" 

2.爲了使EditText在啓動後再次可以被聚焦:
在代碼中設置了可聚焦屬性在setContent()方法之後想要的活動方法:

public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    setContentView(R.layout.main_view); 
    .... 

    EditText et = (EditText) findViewById(R.id.et_notes); 

    et.setFocusable(true); 

    et.setFocusableInTouchMode(true); 

    ... 
}