Выпадающий список Autocompletetextview за программной клавиатурой во фрагменте диалога

#android #android-dialogfragment #autocompletetextview

#Android #android-dialogfragment #autocompletetextview

Вопрос:

В моем приложении есть фрагмент диалогового окна с autocompletetextview в нем, но выпадающий список вместо выравнивания с верхней частью программной клавиатуры размещается позади, не предоставляя доступа к некоторым элементам.

Вот макет:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:padding="10dp"
    android:orientation="horizontal"
    android:windowSoftInputMode="adjustPan|adjustResize">

    <android.widget.AutoCompleteTextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@ id/customDialogAtocompleteTextview"
        android:layout_weight=".7"
        android:layout_gravity="top" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight=".3">
        <Button
            android:id="@ id/customDialogBtOk"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Aceptar"/>
        <Button
            android:id="@ id/customDialogBtSearch"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Buscar"/>
        <Button
            android:id="@ id/customDialogBtMore"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Mas"/>
    </LinearLayout>

</LinearLayout>
  

Итак, как я могу выровнять его по клавиатуре?

Ответ №1:

Теория гласит, что android:windowSoftInputMode="adjustPan|adjustResize" это должно быть сделано, но по какой-то причине этого не происходит, поэтому вам нужно сделать то же самое программно:

 getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
  

И происходит волшебство!!!

Комментарии:

1. Не могли бы вы уточнить ответ, его слишком сложно использовать, я не знаю, как получить диалоговое окно автозаполнения текстового представления

2. Это предложение не работает. Текстовый вид больше не скрыт, но выпадающий список также заблокирован.

Ответ №2:

[обновление] в моем случае .. потому что я использую bottomShetDialogFragment с автозаполнением внутри. выпадающий список не отображается, потому что я не установил dropdownanchor для автозаполнения. просто добавьте android:dropDownAnchor="@id/layout_above_this_autocomplete" и работайте идеально

стиль рекламных новостей в вашем style.xml

 <style name="AppBottomSheetDialogTheme" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/AppModalStyle</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowSoftInputMode">adjustResize</item>
</style>
<style name="AppModalStyle" parent="Widget.Design.BottomSheet.Modal">
<item name="behavior_peekHeight">400dp</item>

</style>
  

в вашем bottomshetdialog framgnet.
oncreate -> setStyle(DialogFragment.STYLE_NORMAL, R.style.AppBottomSheetDialogTheme)

 override fun getTheme(): Int {
    return R.style.AppBottomSheetDialogTheme
}
  

Результат

Комментарии:

1. Спасибо, сэр! Потратил час, перепробовав дюжину вещей, и это было решение.