Почему пример SoftKeyboard для Android выглядит так?

В настоящее время я экспериментирую с образцом SoftKeyboard на своем планшете (Android 3.2). Когда я открываю почтовое приложение Google и устанавливаю фокус на поле recipient, текстовое поле расширяется, чтобы заполнить доступное пространство над клавиатурой. Макет с образцом SoftKeyboard

Это очень похоже на полноэкранный или режим извлечения, как описано в Методы экранного ввода в документации. Из того, что я там собрал, это задается активностью, которая использует SoftKeyboard.

Что меня беспокоит

  • это не очень удобно для поля ввода получателя (хотя это может быть дело вкуса)
  • что стандартной программной клавиатуре удается предотвратить это, как показано ниже: Макет со стандартной программной клавиатурой
  • также иногда цвет текста в поле ввода устанавливается белым (вероятно, какая-то корректировка из-за дневного/ночного времени?). Белое на белом более или менее нечитаемо.

Итак, мой вопрос: что мне нужно изменить, чтобы получить подобное поведение в примере SoftKeyboard?

Спасибо и всего наилучшего

Андреас


person Nudelsuppe    schedule 05.04.2012    source источник
comment
Этот образец кода уже давно не трогался... вы пытались установить targetSdkVersion, чтобы он сказал 13?   -  person Roman Nurik    schedule 05.04.2012
comment
Да, у меня есть android:minSdkVersion="11" и android:targetSdkVersion="13" в манифесте. Нет игральных костей.   -  person Nudelsuppe    schedule 05.04.2012


Ответы (3)


Образец программной клавиатуры очень устарел — в нем используется раскладка, которую не видели со времен Froyo/Eclair.

Образец мягкой клавиатуры — это всего лишь образец, не путать с полноценной клавиатурой Android. Если вы ищете полную реализацию клавиатуры Android, ознакомьтесь с исходным кодом AnySoftKeyboard или исходным кодом AOSP.

Чтобы избавиться от полноэкранного режима, я знаю, что часть проблемы заключается в функции onComputeInsets(). Как я уже сказал, я бы основывал ваш код на полной клавиатуре Android (например, AOSP или Cyanogenmod), а не пытался заставить образец работать. Я пробовал это в течение нескольких месяцев, и у вас слишком много проблем, с которыми вы столкнетесь (мультитач и тематика, и это лишь некоторые из них).

Напишите мне по электронной почте, если у вас есть какие-либо вопросы.

person lrAndroid    schedule 09.04.2012

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

и установите OnclickListener для всех кнопок вашей клавиатуры

Переопределить onCreateInputView() следующим образом

@Override 
public View onCreateInputView() {
     View   mInputView = getLayoutInflater().inflate(
                R.layout.yourkeyboardlayout, null);




            Button btn1 =   mInputView.findViewById(R.id.btn1);

            btn1 .setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                // append text in selected TextField

                String buttonLabel = ((Button)v).getText().toString();
                getCurrentInputConnection().commitText(buttonLabel, 1);


            }
        });



        return mInputView;
    }
person Ravi1187342    schedule 05.04.2012
comment
Извините, но это не ответ на мой вопрос. Я не спрашивал о раскладке самой клавиатуры. На первом снимке экрана показан образец клавиатуры при использовании в приложении Gmail Honeycomb. Текстовое поле — это текстовое поле получателя, предоставленное почтовым приложением. Это не часть клавиатуры. На втором скриншоте показана точно такая же ситуация, но с другой программной клавиатурой. - person Nudelsuppe; 05.04.2012
comment
нажмите здесь, чтобы увидеть экран снимок моей программной клавиатуры посмотрите на снимок экрана программной клавиатуры, которую я разработал. Это из-за индивидуальной клавиатуры Sofkeyboard. Этот внешний вид softkeaboard был достигнут выше, я упомянул в своем ответном сообщении, как указано выше. - person Ravi1187342; 06.04.2012
comment
Прежде всего, спасибо за попытку решить мою проблему. Единственное, что я не вижу, что код, который вы разместили, вообще решает мою конкретную проблему. Я также могу предоставить скриншоты, где программная клавиатура в качестве примера работает должным образом, например, если вы используете ее на Android 2.x. Что я хотел бы знать, так это то, что я могу сделать, чтобы он вел себя как стандартная программная клавиатура Samsung или стандартная Honeycomb при работе на Android 3.x. - person Nudelsuppe; 06.04.2012
comment
просмотрите образец программной клавиатуры в папке android sdk, там есть java-файл SoftKeyboard.java, в котором вы можете найти методы для переопределения в этом файле. - person Ravi1187342; 06.04.2012
comment
На первом снимке экрана показан образец программной клавиатуры (как указано в первом предложении моей записи). - person Nudelsuppe; 08.04.2012

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

http://android-developers.blogspot.com/2009/04/updating-applications-for-on-screen.html

Может быть, это поможет и вам.

person R Earle Harris    schedule 23.09.2013