Есть ли там какие-нибудь шепоты "Google Keyboard"? API19
У меня возникла странная проблема, и я был бы очень признателен за любые предложения, которые могут помочь.
Я пытаюсь добиться должной осмотрительности, тестируя на различных форм-факторах экрана, но у меня возникает проблема, когда речь идет о стандартной ( AKA Google) клавиатуре на эмулируемом Nexus 4 с использованием API уровня 19. AFAIK, согласно Он-лайн спецификации Nexus 4 были выпущены с API 17, поэтому мне кажется, что 19 должен быть способен обрабатывать любое оборудование в Nexus 4.
Я работаю с приложением, которое отображает документ и, по желанию пользователя, позволяет вводить заметки о документе одновременно с просмотром документа. По умолчанию большая часть экрана занята видом документа. Но когда нажата кнопка, позволяющая вводить заметки о документе, представления переупорядочиваются, чтобы отображать программную клавиатуру вместе с представлением EditText для принятия заметок и, тем не менее, для того, чтобы большая часть документа могла быть отображена. просмотр, максимально удобно, и прокрутка обеспечена.
В стандартной "портретной" ориентации я могу использовать то, что мне нужно, без особых проблем; но, как ни странно, в "альбомной" ориентации, независимо от того, как я пытаюсь ее ограничить, сама экранная клавиатура занимает половину "высоты" экрана и занимает другую половину с отдельной областью ввода, отображаемой на ней, высотой в несколько строк; кнопка "ГОТОВО" отображается отдельно примерно наполовину вверх по высоте области ввода возле правого края экрана.
Чтобы сохранить программную клавиатуру и любую связанную область ввода как можно меньше / проще, я предоставил эти атрибуты для EditText:
android:inputType="text|textNoSuggestions|textShortMessage"
android:singleLine="true"
и это для тем в моем файле styles.xml:
<item name="android:windowSoftInputMode">stateUnchanged</item>
Я даже подумал о том, чтобы зайти так далеко, чтобы создать собственную структуру клавиатуры в XML и т. Д. Но я понимаю, что Android не разрешит использовать определение клавиатуры "в частном порядке" только для одного приложения; вместо этого требуется, чтобы пользовательское описание клавиатуры было одобрено пользователем как стандартная клавиатура пользователя, или вообще не разрешает использовать пользовательскую клавиатуру.
Я что-то пропустил? Не правильно ли я использую атрибуты для своих целей? Есть ли что-то еще, что мне нужно сделать, чтобы получить желаемый эффект? Действительный Nexus 4 ведет себя так, как я описал? Или есть проблема с эмуляцией?
Буду очень признателен за любые полезные мысли.
Надеемся, что некоторые изображения помогут проиллюстрировать проблему.
Режим просмотра документов по умолчанию:
После того, как пользователь нажмет кнопку "СДЕЛАТЬ НОТЫ", режим заметок. Это происходит перед тем, как пользователь нажимает в представлении EditText (в котором отображается строка подсказки "Для ввода заметок нажмите здесь"):
Когда нажата кнопка "СДЕЛАТЬ ЗАМЕТКИ", я переставляю вещи. Мне кажется, что элементы управления вписываются примерно в верхний левый квадрант, представление документа размещается в заметно меньшей прокручиваемой области примерно в верхнем правом квадранте; Я прошу, чтобы клавиатура была отображена, и она помещалась на экране под этими вещами. Поскольку клавиатура подходит, я бы не ожидал "извлечения" вида; тем более что к тому времени, когда я получил эти снимки экрана эмулятора, я ограничил представление EditText одной текстовой строкой, поэтому я ожидал, что ввод будет происходить на месте, внутри EditView, так же, как это происходит в "книжной" ориентации...
Вместо этого, когда пользователь нажимает в представлении EditText:
1 ответ
Нет возможности изменить высоту клавиатуры. Клавиатура сама устанавливает это в onComputeInsets класса InputMethodService в сочетании с высотой представления, возвращаемого в onCreateInputView.
На самом деле вы можете создать клавиатуру только для своего приложения, но ваши пользователи будут ненавидеть вас. Вы не собираетесь писать функциональность Swype, или хорошее автозамену, или что-нибудь еще, не тратя годы на это, что есть у других компаний.
То, что вы, похоже, описываете, - это ситуация полноэкранного редактирования, называемая извлечением, когда клавиатура занимает полноэкранный режим в альбомном режиме. Это стандартная версия Android для телефонов, потому что слишком мало экрана остается для приложений, чтобы их можно было использовать. Это то, что вы видите, или это что-то еще? Если это режим извлечения, попробуйте добавить android:imeOptions="flagNoExtractUi" в текстовое представление.