Как переместить макет вверх, когда отображается мягкая клавиатура android
у меня есть экран входа в систему с двумя EditTexts
и кнопка входа в мой макет. Проблема в том, что когда я начинаю печатать, мягкая клавиатура и закрывает кнопку Войти. Как я могу нажать макет вверх или выше клавиатуры, когда он появляется?
Я не хочу использовать ScrollView
, просто хочу реализовать его без прокрутки вниз. Пожалуйста, предложите мне какой-нибудь способ. Спасибо заранее.
16 ответов
Set windowSoftInputMode
свойство adjustPan
и adjustResize
<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
попробуйте это в файле манифеста android, соответствующем действию.
<activity android:windowSoftInputMode="adjustPan"> </activity>
используйте этот код в onCreate()
способ:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
только
android:windowSoftInputMode="adjustResize"
в вашем теге активности внутри файла манифеста будет делать трюк
поместите эту строку во время объявления активности в манифест.в XML
<android:windowSoftInputMode="adjustPan">
Я как-то добился этого, зная состояние мягкой клавиатуры на устройстве. я перемещаю макет в положение y, когда отображается клавиатура, и возвращаюсь в исходное положение, когда не отображается. это отлично работает, а затем этой рекомендации.
android:fitsSystemWindows="true"
добавить свойство в основной макет файла макета и
android:windowSoftInputMode="adjustResize"
добавить строку в Манифесте.xml-файл на вашем Activty
его идеальная работа для меня.
поместите это в объявление действия в файле манифеста
<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
или если вы хотите, вы можете добавить в onCreate() метод вашей деятельности
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
Accoding к этому руководство, правильный способ достичь этого-объявить в своем манифесте:
<activity name="EditContactActivity"
android:windowSoftInputMode="stateVisible|adjustResize">
</activity>
когда появляется softkeyboard, он изменяет размер основного макета, и вам нужно сделать прослушиватель для этого mainlayout и внутри этого прослушивателя добавьте код scrollT0(x,y)
для прокрутки вверх.
Если вы работаете с Xamarin, вы можете поместить этот код
WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize
в атрибуте activity класса MainActivity.
Например, теперь атрибут activity будет выглядеть следующим образом
[Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
//some code here.
}
используйте относительный макет, он отрегулирует вид, чтобы вы могли видеть этот вид при вводе текста
это работает как шарм для меня
getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
вы должны использовать
android:windowSoftInputMode="adjustPan|stateHidden"
в своем AndroidManifest.xml
файл, в котором вы объявляете свою деятельность. Это позволит настроить содержимое макета, когда клавиатура отображается в макете.