2012-04-03 2 views
0

하나의 활동에 PopupWindow가 있습니다. 사용자가 액티비티의 목록 항목을 누르면 사용자로부터 입력을 받기위한 창이 팝업됩니다.사용자가 버튼을 누를 때만 Android 키보드에 입력 키보드가 표시됩니다.

창에 일부 EditText가 있습니다. 또한 일부 텍스트를 미리 설정 한 일부 단추를 제공하므로 사용자가이 단추를 누르면 편집 문구에 입력됩니다.

창을 처음 팝업 할 때 소프트 키 보드를 비활성화 할 수 있습니다. 그러나 edittext (하나의 edittext에서 다른 edittext로 이동)에 초점을 변경하면 키보드가 나타납니다.

사용자가 팝업 창에서 "키보드 표시"버튼을 누를 때만 소프트 키 보드 표시를 원합니다. 어떻게 할 수 있습니까?

public void onFocusChange(View view, boolean hasFocus) { 
    if (hasFocus) { 
     selectedEditText = (EditText)view; 
     String text = selectedEditText.getText().toString(); 
     selectedEditText.setSelection(text.length()); 
     InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     inputManager.hideSoftInputFromWindow(selectedEditText.getWindowToken(), 0); 
    } 
} 

내가 위의 코드를 시도했지만 여전히 보여주는 :

업데이트.

답변

0

아주 간단한 해결책이 너무있다

+0

,하지만 여전히 초점 키보드를 보여주는 변경된 코드가 잘못된 것입니까? – Hanon

+0

@Hanon .. 코드가 정상적으로 보입니다. 디버깅을 시도하고 디버깅을 시도했는지 확인하십시오. – ngesh

+0

결과가 if 본문에 기록되고 본문 부분이 실행되었습니다. 끝에 inputManager.isActive()를 추가했지만 항상 true를 반환합니다. – Hanon

0

.. 사용자가 버튼을 누르면 그 경우에만 표시 ... 모든 당신이 EDITTEXT과 포커스가있을 경우 내부 해제 키보드 팝에 onFocusChangedListener()을 설정; EditText 위의 가짜 포커스를 만들면 좋은 결과를 얻을 수 있습니다. 이처럼 는 :

<LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:focusable="true" 
     android:focusableInTouchMode="true"> 
    </LinearLayout> 
    <!--Your EditText--> 
    <EditText 
     ... 
    </EditText> 

또한 당신은 텍스트 뷰와 같은 등등, 어떤 VIEW에 언급 글고 위에 두 줄을 추가 할 수 있습니다.

는 XML에
 android:focusable="true" 
     android:focusableInTouchMode="true" 
0

이동하고 활동에 속성을 부여 키보드 추가를 숨기려하는 활동을 찾아 ..

android:windowSoftInputMode="stateAlwaysHidden" 
내 코드를 업데이트
관련 문제