2016-11-18 4 views
0

아래와 같이 사용자 정의 된 키보드를 팝업 창으로 구현했습니다.popupWindow 키보드가 튀어 나올 때 하단 목록 항목을 숨 깁니다.

LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); 
keyboardView = layoutInflater.inflate(R.layout.keyboard_guess, null); 
final PopupWindow popupWindow = new PopupWindow(
        keyboardView, 
        ViewGroup.LayoutParams.MATCH_PARENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT, 
        true); 

// init keyboard keys 
setKeyBoardKeys(); 

popupWindow.showAtLocation(keyboardView, Gravity.BOTTOM, 0, 0); 

목록보기의 행에서 요소를 선택하면 사용자 지정 키보드가 팝업됩니다.

모두 정상적으로 작동합니다. 그러나 목록 맨 아래의 요소를 선택하면 팝업 키보드가 선택된 행을 숨 깁니다. 목록을 위로 이동하여 팝업 키보드가 선택된 행을 숨기지 않도록 방지하려면 어떻게해야합니까?

답변

0

트릭이 목록보기의 크기를 조정하고 있습니다. 나는 그것의 밑에 전망을 가진 명부의 토글 (footerView)에 의하여 그것을했다. 그리고 항목을 부드럽게 스크롤하여. post()를 통해 UI 스레드에 이벤트를 전달하지 않으면 스크롤이 작동하지 않습니다. (post()에 대한 자세한 내용은 this을 확인하십시오.)

다음은 위의 문제에 대한 해결책입니다.

 // re size the list view (push up) to provide space for the keyboard 
     mListView.post(new Runnable() { 
      @Override 
      public void run() { 
       LinearLayout.LayoutParams lParams = (LinearLayout.LayoutParams) mListView.getLayoutParams(); 
       View footerView = findViewById(best_guess_list_footer); 
       LinearLayout.LayoutParams fParams = (LinearLayout.LayoutParams) footerView.getLayoutParams(); 


       listHeightWeight = lParams.weight; 
       mListView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, 0, fParams.weight)); 
       mListView.requestLayout(); 
       mItemAdapter.notifyDataSetChanged(); 
       mListView.smoothScrollToPosition(position); 
      } 
     }); 

     popupWindow.showAtLocation(keyboardView, Gravity.BOTTOM, -100, -100); 

희망이 있으면 도움이 될 것입니다.

관련 문제