Ответы:
Вы спрашиваете, как контролировать то, что видно при открытии программной клавиатуры? Возможно, вы захотите поиграть с windowSoftInputMode . Смотрите документацию для разработчиков для дальнейшего обсуждения.
android:fitsSystemWindows="true"
к своему корневому представлению, чтобы решить это.
У меня были такие же проблемы. Попробуйте следующий код:
android:windowSoftInputMode="adjustPan"
добавьте его в файл manifest.xml в теге активности, содержащей входные данные. пример:
<activity
android:name=".Activities.InputsActivity"
...
android:windowSoftInputMode="adjustPan"
/>
adjustResize
было бы, но оно также охватывает мои поля ввода
У меня была та же проблема, когда программная клавиша находилась поверх представлений EditText, которые располагались внизу экрана. Мне удалось найти решение, добавив одну строку в соответствующую активность моего файла AndroidManifest.xml.
android:windowSoftInputMode="adjustResize|stateHidden"
Вот как выглядит весь тег активности:
<activity
android:name="com.my.MainActivity"
android:screenOrientation="portrait"
android:label="@string/title_activity_main"
android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
Здесь самое важное значение - AdjustResize. Это сместит весь пользовательский интерфейс вверх, чтобы освободить место для клавиатуры.
adjustResize|stateHidden
и это не имело никакого значения adjustPan
.
Почему бы не попробовать добавить ScrollView, чтобы обернуть все, что вы хотите прокручивать. Вот как я это сделал, где я фактически оставляю верхний колонтитул, который не прокручивается, а диалоговые виджеты (в частности, EditTexts) прокручиваются при открытии программной клавиатуры.
<LinearLayout android:id="@+id/HeaderLayout" >
<!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
<!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>
Обычно у меня есть LinearLayout внутри ScrollView, но это зависит от вас. Кроме того, установка стиля полосы прокрутки на outsideInset помогает, по крайней мере, на моих устройствах.
Все, что вам нужно сделать, это
android:isScrollContainer="true"
источник: http://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/
Извините за восстановление старого потока, но никто не упомянул настройки android:imeOptions="flagNoFullscreen"
в вашем элементе EditText
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"
работает для Android EditText, в то время как он не работает для веб-просмотра или xwalkview. Когда программная клавиатура скрывает ввод в webview или xwalkview, вы используетеandroid:windowSoftInputMode="adjustResize"
Я считаю, что вы можете сделать прокрутку с помощью трекбола, что в конечном итоге может быть достигнуто программно с помощью методов выбора, но это всего лишь идея. Я знаю, что метод трекбола обычно работает, но что касается точного способа сделать это и заставить его работать из кода, я не уверен.
Надеюсь, это поможет.
добавьте эту единственную строку к вашей относительной активности, где крышка клавиатуры редактирует метод действия text.inside onCreat ().
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
Если поле EditText покрыто клавиатурой, используйте следующий код:
EditText= findViewById(R.id.edittext)
EditText?.getParent()?.requestChildFocus(EditText,EditText)
Если вы хотите, чтобы Курсор был в Сфокусированном EditText, используйте EditText.requestFocus()
после, EditText?.getParent()?.requestChildFocus(EditText,EditText)
который помогает получить фокус и Курсор в Сосредоточенном EditText.
Отредактируйте свой AndroidManifest.xml
android:windowSoftInputMode="adjustResize"
Добавьте это к вашему корневому представлению файла макета.
android:fitsSystemWindows="true"
Вот и все.