2016-09-05 4 views
1

저는 editText와 툴바가 있습니다. 내가 editText에 집중할 때 툴바를 숨기고 사용자가 텍스트를 입력 할 수 있도록 softKeyboard를 보여줍니다. 뒤로 키를 누르면Android - softKeyboard 숨기기 및 표시

이 문제는 다시 도구 모음 표시하기 위해 다시 누를 방법 추가됩니다

@Override 
    public void onBackPressed() { 
     //show toolbar 
     toolbar_bottom.setVisibility(View.VISIBLE); 

    } 

을하지만 먼저 키보드를 숨기고 내 도구 모음이 표시 될 때 한 번 더 누르면까지입니다 다시. 키보드를 숨기고 한 번의 누르기로 도구 모음을 볼 수있는 방법이 있습니까?

+0

<com.limecream.CustomEditText android:id="@+id/CEditText" android:layout_height="wrap_content" android:layout_width="match_parent"/> 

내 활동, 핸들러를. postDelayed (new Runnable() { public void run() { toolbar_bottom.setVisibility (View.VISIBLE); } }, 500);) – Tasos

+0

@Tasos? @Override public void onBackPressed() { // 쇼 툴바 핸들러 핸들러 = 새로운 핸들러(); } –

+0

예 내에서 제공 한 코드를 onBackPressed() {}에 붙여 넣습니다. -newBackuped() 그 투구는 0.5 초 만에 볼 수 있습니다. 그 바보가 숨길 필요가있는 시간에 관한 것 – Tasos

답변

0

당신은 onKeyDown에 메소드를 오버라이드 (override) 할 수

소프트 키보드가 표시 될 때 키보드가 활동하고 소비하는 이전 이벤트를 가지고 있기 때문에, 당신의 onBackPressed가 뒤로 버튼을 눌러 트리거되지 않습니다 때문입니다
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      HideYourToolbar(); 
      HideYourSoftKeyboard(); 
      return false; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
+0

똑같은 형제, 방금 다른 코드로 같은 방식으로 게시했다 ... –

0

그 사건.

나는 그 행동이 안드로이드 애플 리케이션에서 매우 일반적이며 보통이라고 생각하며 대부분의 사람들은 문제없이 그것을 받아 들일 것입니다.

어쨌든 한 번의 클릭으로 처리하려면 [키보드가 보이지 않음] 일 때 이벤트를 포착해야합니다.

Android에서는 다소 까다 롭습니다.
완벽한 솔루션이 없다고 생각하지만 몇 가지 해결 방법이 있습니다.
Check this link.

0

이미 내 문제의 해결책을 발견했습니다. 다른 사람들을 돕기를 바랍니다.

public class CustomET extends EditText { 

     Context context; 

     public CustomEditText(Context context, AttributeSet attrs) { 
      super(context, attrs); 
      this.context = context; 
     } 

     @Override 
     public boolean onKeyPreIme(int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
       InputMethodManager mgr = (InputMethodManager)   
        context.getSystemService(Context.INPUT_METHOD_SERVICE); 
       mgr.hideSoftInputFromWindow(this.getWindowToken(), 0); 
//show toolbar 

      } 
      return false; 
    } 

내 XML : 당신이 모든이 완료되기 전에 조금 기다린 후 도구 모음 (핸들러 핸들러 = 새로운 핸들러() 표시 할 수 있습니다

public class MainActivity extends Activity { 
    private CustomEditText editText; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     editText = (CustomEditText) findViewById(R.id.CEditText); 
    } 
}