2016-12-04 7 views
0

그래서 내가 만든 사용자 정의 툴바 바로 아래에 EditText가 있습니다. 그리고 edittext 아래에 listview가 있습니다. 그러나 소프트 키보드가 나타나면 키보드로 차단 된 사용자는 목록을 볼 수 없습니다. 소프트 키보드가 나타나면 EditText를 화면 상단으로 이동하여 툴바를 화면 밖으로 밀어내는 방법 NoActionBar 테마를 사용하고 있습니다. 도움이 될 것입니다.안드로이드 - 소프트 키보드가 나타날 때 액션 바를 밀어 넣으십시오.

편집 : 나는 이미 Manifests.xml

감사에서

android:windowSoftInputMode="adjustPan" 

을 시도!

편집 : 이 코드를 사용하면 키보드가 나타나면 툴바를 숨길 수 있습니다.

 numbersActivityRoot = (CoordinatorLayout) findViewById(R.id.numbers_activity_root_view); 
     appBarLayout = (AppBarLayout) findViewById(R.id.appbarLayout); 
     numbersActivityRoot.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
       Rect r = new Rect(); 
       //r will be populated with the coordinates of your view that area still visible. 
       numbersActivityRoot.getWindowVisibleDisplayFrame(r); 

       int heightDiff = numbersActivityRoot.getRootView().getHeight() - (r.bottom - r.top); 
       if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard... 
        Log.v("NUMBERS","Hide toolbar"); 
        appBarLayout.setExpanded(false); 
       } else { 
        Log.v("NUMBERS","Show toolbar"); 
        appBarLayout.setExpanded(true); 
       } 
      } 
     }); 

로그 메시지는 키보드를 감지 정확한 결과를 보여주는 동안,하지만 도구 모음은 여전히 ​​숨어되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

android를 사용해 보셨습니까? windowSoftInputMode = "adjustPan"? –

+0

예. 있습니다. 효과가 없습니다. – Asym

+0

보기 계층 구조를 첨부하십시오. –

답변

2

adjustPan 키보드가 올라 갔을 때 EditText이 화면에 완전히 있으면 도움이되지 않습니다. 개인적으로, 나는 결코adjustPan를 사용한다. 시스템이 당신의 창을 예측할 수없는 양만큼 움직이게하고, 나는 그것을 전혀 좋아하지 않기 때문이다.

해결해야 할 두 가지 주요 문제가 있습니다. 키보드 감지가 보이고 툴바가 화면에서 사라집니다.

첫 번째 부분에서는 프레임 워크가 키보드 표시/숨김을 직접 알 수있는 메커니즘이 없습니다. 해결 방법이있는 StackOverflow에 대한 게시물이 많이 있습니다 (예 : this onethis one). 기본 아이디어는 전체 휴대 전화 화면의 높이와 콘텐츠보기의 높이를 비교하는 것입니다. 중요한 차이가있는 경우 소프트 키보드가 다른 공간을 점유하고 있다고 가정합니다. 두 번째 부분에 대한

, 나는 당신이 당신의 Toolbar 속성 layout_scrollFlags="scroll" (또는 어쩌면 "scroll|enterAlways")를 제공함으로써 AppBarLayout의 스크롤 기능/축소를 사용하는 것이 좋습니다. 1 부에서 설명한 트릭 중 하나를 사용하여 키보드 변경을 감지하면 appBarLayout.setExpanded(boolean)으로 앱 표시 줄을 축소하거나 확장 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 도구 모음을 숨기는 방법이라고 생각합니다. 그러나 여전히 작동하지 않습니다. 제 최근 편집을 다시 한 번 살펴보고 잘못된 점을 알려주십시오. – Asym