2012-06-07 55 views
11

我在我的佈局中的edittext和一個按鈕,在我的代碼我設置edittext爲空的keyListener編輯文本的按鍵偵聽

editText.setKeyListener(null); 

,這樣我可以不輸入到我的edittext。現在點擊我的按鈕,我應該可以輸入我的ediitext。我怎樣才能做到這一點。這是一個簡單的問題,但我無法找到任何解決方案。任何幫助將非常感激。

回答

19

我可能遲到,但現在,這是我做的方式:

public class MyActivity extends Activity 
{ 
    private KeyListener listener; 
    private EditText editText; 

    public void onCreate(...) 
    { 
     editText = ... // Get EditText from somewhere 
     listener = editText.getKeyListener(); // Save the default KeyListener!!! 
     editText.setKeyListener(null); // Disable input 
    } 

    // When you click your button, restore the default KeyListener 
    public void buttonClickHandler(...) 
    { 
     editText.setKeyListener(listener); 
    } 
} 

基本上,你先救在您致電setKeyListener(null)之前,您可以使用KeyListener的默認設置EditText的默認。然後,當你點擊你的按鈕時,你再次調用setKeyListener,傳遞你先前保存的默認偵聽器。

+0

正是我想要的......沒有嘗試過,但它聽起來很有希望。 – SKT

1

它在android中的錯誤請參閱這裏Bugs

但在XML文件中,你可以做it.Using android:editable="false"

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:editable="false" <<<<<<< 
</EditText> 
+0

很抱歉,如果我們不喜歡,我們仍然可以輸入到禁用模式也EditText上。我不能接受這個答案,儘管它可能會讓用戶感覺他可能無法輸入edittext – SKT

+0

@ user1172936看我更新我的答案 –

+0

我想要做的只是通過代碼。因爲當我再次點擊那個按鈕。我想使edittext的屬性像以前一樣(無法輸入)所以我不能去尋找xml ......但是我會檢查是否有像java代碼中可編輯的屬性......意思是說,如果你找到一個答案,請幫我張貼它... Thankyou – SKT

3

您可以使用此:

// When you click your button, restore the default KeyListener 
public void buttonClickHandler(...) 
{ 
    editText.setKeyListener(new EditText(getApplicationContext()).getKeyListener()); 
} 
+0

我認爲rainai的回答更準確。這將保持編輯文本的原始keylistener – SKT

+0

我托盤rainai的方法,但它不適用於我,所以我但這種方法,因爲它的工作。 :) –

+0

rainai的方法也沒有爲我工作。這一個雖然工作。 – Rishabh876