Intereting Posts
Почему onStop вызывается сразу после запуска моей активности? Заставка экрана при загрузке ресурсов в Android-приложении Поддерживает ли браузеры веб-браузера android функции html5? Очистить содержимое WebView Исключение для Android: вам нужно использовать тему Theme.AppCompat с этой деятельностью Как я могу показать мягкую клавиатуру в веб-браузере с подключенным USB-HID-устройством при нажатии кнопки и фокусировкой ввода? Java.lang.UnsupportedOperationException: RecyclerView не поддерживает прокрутку в абсолютную позицию Как изменить значок по умолчанию в SearchView, который будет использоваться в панели действий на Android? Как имитировать убийство приложения Android GC Является ли поведение по умолчанию для Android WebView изменено на открытие внутри всех ссылок? Как я могу поделиться экраном на другой базе устройств с прямым соединением WiFi Новая клавиатура Android EditText не работает (только на входе) Список нескольких вариантов с пользовательским представлением? Правильное использование setEmtpyView в AdapterView Интересный и основанный на местоположении алгоритм для мобильного приложения Android

Мягкая клавиатура скрывает половину EditText

У меня есть listview, и последний элемент списка содержит EditText:

<RelativeLayout android:id="@+id/contentLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="30dp" android:orientation="vertical" > <ImageView android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/messageEditText" android:layout_below="@+id/messageEditText" android:layout_marginRight="14dp" android:src="@drawable/test" /> <EditText android:id="@+id/messageEditText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/sendImageButton" android:ems="10" android:gravity="top" android:hint="@string/messageEditText" android:inputType="textMultiLine" android:minHeight="55dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="10dp" /> <ImageButton android:id="@+id/sendImageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/messageEditText" android:layout_alignParentRight="true" android:layout_alignTop="@id/messageEditText" android:adjustViewBounds="true" android:maxHeight="55dp" android:maxWidth="55dp" android:padding="12dp" android:scaleType="centerInside" android:src="@drawable/sendmessage" /> </RelativeLayout> 

Половина текста EditText скрыта. Я также не могу прокручивать список. Любое решение?

образ

Solutions Collecting From Web of "Мягкая клавиатура скрывает половину EditText"

Решение заключалось в установке атрибута android:softInputMode для adjustResize в манифесте и размещения макета (а не макета списка) внутри ScrollView.

У меня была аналогичная проблема, затем я использовал android:windowSoftInputMode="adjustResize|stateHidden" как упоминалось здесь .. Это очень хорошо работает для меня ..

Отключить клавиатуру при запуске окна

 this .getWindow().setSoftInputMode(WindowManager.LayoutParams. SOFT_INPUT_STATE_ALWAYS_HIDDEN ); 

Установите атрибут android:softInputMode для вашего элемента Activity в манифесте.

См. Документацию Manifest для полного списка допустимых значений и их эффекта. Особый интерес для вас, скорее всего, будет adjustPan и adjustResize .

С первых дней работы в качестве разработчика Android я боролся с виртуальной клавиатурой. Я поражен тем, что Android по-прежнему не дает для этого элегантного и ясного решения.

Итак, вот обходной путь, который поместит этот беспорядок позади вас. Он будет работать без обходного пути ScrollView или передачи вашего полноэкранного флага.

  1. Добавьте эту удивительную библиотеку в свой файл gradle:

compile'net.yslibrary.keyboardvisibilityevent: keyboardvisibilityevent: 1.0.1'

  1. Убедитесь, что ваша активность имеет следующие настройки клавиатуры:

андроид: windowSoftInputMode = "adjustResize"

  1. Оберните свой EditText вертикальным LinearLayout и добавьте View with Visibility of Gone:

     <com.ylimitapp.ylimitadmin.views.NormalFontEditText android:id="@+id/input_et" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textCapSentences|textMultiLine" android:imeOptions="actionSend" android:paddingStart="20dp" android:paddingEnd="40dp" android:paddingTop="10dp" android:maxHeight="120dp" android:adjustViewBounds= "true" android:scrollHorizontally="false" android:textColorHint="#7b7b7b" android:hint="@string/type_your_message" android:background="@drawable/msg_inputfield_bg" android:textColor="@color/black_text_color" android:textSize="15.33sp" /> <View android:id="@+id/keyboard_view" android:layout_width="match_parent" android:layout_height="20dp" android:visibility="gone" /> </LinearLayout> 
  2. Вычислите размер экрана, чтобы вы могли рассчитать высоту представления, которое толкает EditText:

     private void storeScreenHeightForKeyboardHeightCalculations() { Rect r = new Rect(); View rootview = getActivity().getWindow().getDecorView(); rootview.getWindowVisibleDisplayFrame(r); mOriginalScreenHeight = r.height(); Rect rectangle = new Rect(); Window window = getActivity().getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectangle); int statusBarHeight = rectangle.top; int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); int titleBarHeight= contentViewTop - statusBarHeight; if (titleBarHeight == 0) { mOriginalScreenHeight -= (24 * Utils.getDensity(getContext())); } } 
    1. Добавьте прослушиватель для открытия и закрытия клавиатуры, а затем установите высоту представления ниже EditText во время выполнения, чтобы мы правильно установили высоту на любом устройстве и пользовательских клавиатурах. Затем просто сделайте его видимым, когда клавиатура открыта:
 private void addkeyBoardlistener() { KeyboardVisibilityEvent.setEventListener( getActivity(), new KeyboardVisibilityEventListener() { @Override public void onVisibilityChanged(boolean isOpen) { if (isOpen) { Rect r = new Rect(); View rootview = getActivity().getWindow().getDecorView(); // this = activity rootview.getWindowVisibleDisplayFrame(r); int keyboardHeight = (mOriginalScreenHeight - r.height()); LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) keyboard_view.getLayoutParams(); params.height = (int) ((keyboardHeight + 5 * Utils.getDensity(getContext()))); keyboard_view.setLayoutParams(params); keyboard_view.setVisibility(View.VISIBLE); } else { keyboard_view.setVisibility(View.GONE); } } }); } 

Еще раз я все еще удивляюсь, что мне пришлось потратить 3 часа на то, чтобы решить такую ​​тривиальную проблему.

Результат: