2012-06-07 2 views
11

는 내 레이아웃에 edittext과 버튼이 내 코드에서 나는 내 edittext에 입력 할 수 없습니다텍스트 편집 키 리스너

editText.setKeyListener(null); 

않도록는 null edittextkeyListener을 설정하고있다. 이제 버튼을 클릭하면 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); 
    } 
} 

가 먼저 저장 EditText의 기본값은 입니다. setKeyListener(null)으로 전화하기 전에 키 수신기를 사용하십시오. 그런 다음 단추를 클릭하면 setKeyListener으로 다시 전화하여 이전에 저장 한 기본 수신기를 전달합니다.

+0

그냥 원했던 ... 시도하지 않았지만 유망한 것으로 들립니다. – SKT

1

안드로이드의 버그는 여기 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

코드를 통해서만하고 싶다. 왜냐하면 내가 다시 그 버튼을 두드리기 때문이야. 내가 전에 편집 텍스트의 속성을 만들고 싶습니다. (입력 할 수 없습니다.) 그래서 XML을 사용할 수 없습니다. 그러나 자바 코드에서 편집 가능한 속성이 있는지 확인합니다. 답변을 찾으십시오. 게시하여 도와주세요 ... 감사합니다 ... – SKT

3

이를 사용할 수 있습니다

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

나는 rainai의 대답이 더 정확하다고 생각합니다. 그것은 edittext의 원래 keylistener를 보관할 것입니다. – SKT

+0

트레이 레이나이의 방법이지만, 저에게는 효과적이지 않습니다. 그래서이 방법이 효과적이기 때문에 그렇습니다. :) –

+0

rainai의 방법도 나를 위해 작동하지 않았다. 이 하나는 일했다. – Rishabh876