2012-02-02 6 views
79

У меня есть экран входа в систему с двумя EditTexts и кнопка входа в мой макет. Проблема в том, что когда я начинаю печатать, отображается мягкая клавиатура и закрывается кнопка входа в систему. Как я могу нажать макет вверх или над клавиатурой, когда он появится?Как перемещать макет, когда отображается мягкая клавиатура android

Я не хочу использовать ScrollView, просто хочу реализовать его без прокрутки вниз. Пожалуйста, предложите мне какой-то способ сделать это. Заранее спасибо.

ответ

10

я как-то достигнув этого, зная состояние мягкой клавиатуры на устройстве. Я перемещаю макет в позицию y, когда клавиатура отображается и возвращается в исходное положение, когда она не показана. это работает отлично, в соответствии с руководящими from https://stackoverflow.com/a/4737265/1063861

+2

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

28

Попробуйте это в файле манифеста Android, соответствующем действию.

<activity android:windowSoftInputMode="adjustPan"> </activity> 
+0

мой loyout перемещается в первый раз, но когда закрывается клавиатура и снова открывается, не двигайтесь. – nabeghe

61

Set Mode Window SoftInput свойство adjustPan и adjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity> 
+14

Я уже делаю это, но все равно никаких изменений – cavallo

+28

Это не сработало из коробки, но изменив его на '' получил его работу. – nickiaconis

+1

Нужен относительный макет для работы – AndroSco

0

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

+1

проверить мой макет, я добавил код – cavallo

23

Используйте этот код в onCreate() метод:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
+0

Это сработало для меня, спасибо - я попробовал в xml, но я думаю, мне нужно заставить его с кодом – Veeru

+1

Спасибо, что помогло. не помог мне по какой-то причине. – DH28

+0

Этот метод, но используйте 'SOFT_INPUT_ADJUST_RESIZE' вместо ADJUST_PAN, работал для меня – Voy

2

Accoding к этому guide, правильный путь для достижения этой цели является декларирование в манифесте:

<activity name="EditContactActivity" 
     android:windowSoftInputMode="stateVisible|adjustResize"> 

    </activity> 
+0

Похоже, что stateVisible заставит его открываться, когда начинается действие, поэтому нет необходимости фактически нажимать клавиатуру. – CodyEngel

0

Это работает как очарование для меня

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

Поместите эту линию в деятельности время объявления в Manifest.xml

<android:windowSoftInputMode="adjustPan"> 
3

Это все, что необходимо:

<activity android:windowSoftInputMode="adjustResize"> </activity> 
6

Поместите это в декларации деятельности в файле манифеста

или если вы хотите добавить в свой oncreate() метод вашей деятельности

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
+0

Единственный, который работал на меня немедленно. – kiwicomb123

+0

Недопустимый код манифеста, поэтому поведение не определено (вы устанавливаете два значения конфликта, см. Offdoc: https://developer.android.com/guide/topics/manifest/activity-element.html, 'android: windowSoftInputMode' description) , @ kiwicomb123, выберите один параметр или система выберет для вас (и этот выбор может измениться на другом устройстве/API-интерфейсе) – kpower

14

только

android:windowSoftInputMode="adjustResize" 

в вашей деятельности тега внутри манифеста файла будет делать трюк

+0

Спасибо! Это то, что сработало для меня. Ответы выше этого не сделали. :) – Woppi

2

Когда появится softkeyboard, она изменяет размер основного макета, а также то, что вам нужно сделать, это сделать слушатель для этого mainlayout и внутри этого слушателя, добавьте код scrollT0(x,y) для прокрутки вверх.

0

Вы должны использовать "android: windowSoftInputMode =" adjustPan | stateHidden "в вашем файле android Mainfest.xml, где вы объявляете ее активность. Это позволит отрегулировать ваше содержимое макета, когда клавиатура отображается в макете.

2

Если вы работаете с xamarin, вы можете поместить этот код WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize в атрибут активности класса MainActivity. Например, теперь атрибут активности будет выглядеть, как показано ниже

[Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)] 
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity 
    { 
     //some code here. 
    } 
6
android:fitsSystemWindows="true" 

добавить недвижимость на основной раскладке файла макета и

android:windowSoftInputMode="adjustResize" 

надстройкой в ​​вашем файле Manifest.xml на вашем Activty

его идеальная работа для меня.

+0

fitsSystemWindows не имеет ничего общего с клавиатурой –

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