В Android, как мне прикрепить вид к программной клавиатуре? - PullRequest
2 голосов
/ 27 января 2011

То, что у меня есть, - это загрузка фотографий с основным фоном фотографии, текстом редактирования и набором кнопок внизу.Когда я нажимаю текст редактирования, я хочу, чтобы программная клавиатура нажимала текст редактирования и кнопки вверх (чтобы они были по-прежнему доступны для просмотра) и сохраняла фоновое изображение таким же.Тем не менее, сейчас он только поднимает его достаточно, чтобы увидеть первую строку текста редактирования, и все мои кнопки скрыты.

Я просто хочу как-то присоединить представление к экранной клавиатуре и оставить остальную часть действия в покое,Я попытался установить флаг windowSoftInputMode в манифесте, но ни один из параметров не дает желаемого эффекта (я не хочу, чтобы размер макета изменялся, и панорамирование не оказывает влияния).Как мне добиться чего-то подобного?

1 Ответ

1 голос
/ 27 января 2011

К сожалению, в текущем SDK мы немного на милости системы, когда речь заходит о том, как ведет себя представление, когда программная клавиатура появляется и исчезает.Лучший способ добиться нужного поведения - оставить в окне режим ввода по умолчанию и убедиться, что в вашем представлении есть один прокручиваемый элемент.Имейте в виду, что этот элемент не нужно прокручивать, когда клавиатура скрыта (содержимое меньше, чем представление прокрутки), но когда раскроется клавиатура, он уменьшит размер прокручиваемого представления и оставит все остальное в покое.

Вот пример.Допустим, это ваш файл res / layout / main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <LinearLayout
    android:id="@+id/control"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:orientation="vertical">
    <EditText
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"/>
    <Button
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:text="A Button"/>
  </LinearLayout>
  <ScrollView
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_above="@id/control">
  </ScrollView>
</RelativeLayout>

Попробуйте использовать его в качестве корневого макета базового упражнения, и вы увидите, что весь LinearLayout скользит вверх и вниз с помощью клавиатуры,потому что Android изменяет размер области просмотра ScrollView вместо того, чтобы сдвинуть вид вверх достаточно, чтобы показать сфокусированный элемент ввода (который вы видите сейчас).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...