2015-08-13 3 views
0

Я хочу показать PopupWindow над виртуальной клавиатурой, как Google Keep сделал при создании напоминания:Как показать PopupWindow над клавиатурой?

enter image description here

+0

Я думаю, вы найдете это полезным https://guides.codepath.com/android/Using-DialogFragment –

+0

@RachelGallen Но я хочу показать его в любом месте на экране ... – ywwynm

ответ

0

использовать следующий код. Измените местоположение всплывающего окна в методе «showAtLocation».

LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup_layout, null, false), ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT, true); 
    findViewById(R.id.activity_layout).post(new Runnable() { 
     @Override 
     public void run() { 
      pw.showAtLocation(findViewById(R.id.activity_layout), Gravity.CENTER, 0, 0); //set location here 
     } 
    }); 
+1

Прошу прощения, но ваш ответ не только бесполезно, но и неправильно. – ywwynm

+0

Это работает для меня:/ –

4

Я считаю, что вы ищете сочетание:

popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
popupWindow.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); 

Это в основном, как родной SearchView работы: https://android.googlesource.com/platform/frameworks/support/+/android-6.0.1_r31/v7/appcompat/src/android/support/v7/widget/SearchView.java#1695 , который в основном вызывает AutocompleteTextView.ensureImeVisible()

public void ensureImeVisible(boolean visible) { 
    mPopup.setInputMethodMode(visible 
      ? ListPopupWindow.INPUT_METHOD_NEEDED : ListPopupWindow.INPUT_METHOD_NOT_NEEDED); 
    if (mPopup.isDropDownAlwaysVisible() || (mFilter != null && enoughToFilter())) { 
     showDropDown(); 
    } 
} 

Это изменит размер всплывающего окна, которое будет отображаться точно между символом Якорь и клавиатурой.

+0

Очень хорошее решение. – jzeferino

+0

это решило еще одну проблему, которую я хотел решить, чтобы позволить клавиатуре ВЫШЕ мое всплывающее окно :) только что использовалось .setInputMethodMode (ListPopupWindow.INPUT_METHOD_NEEDED) – RJFares

Смежные вопросы