Специальная клавиатура с клавиатурой Android при длительном нажатии
У меня есть пользовательская клавиатура Android:
public class CustomKeyboard extends Keyboard{...}
public class CustomKeyboardView extends KeyboardView{...}
public class CustomKeyboardIME extends InputMethodService implements KeyboardView.OnKeyboardActionListener{...}
На некоторых клавишах у меня есть popupKeyboard
и popupCharacters
:
<Key android:codes="144" android:keyLabel="0" android:popupKeyboard="@xml/key_popup" android:popupCharacters=")" android:keyEdgeFlags="right"/>
XML/key_popup.xml:
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:horizontalGap="0px"
android:verticalGap="0px"
android:keyHeight="@dimen/key_height" >
</Keyboard>
Но когда я нажимаю кнопку "0", появляется всплывающее окно с ")", но оно остается там до тех пор, пока я не нажму кнопку "X" или ")". Это выглядит так:
![My keyboard]()
И я хочу, чтобы он был открыт только тогда, когда я держу палец. Что-то вроде на клавиатуре Samsung или HTC:
![Samsung keyboard]()
Кто-нибудь может мне помочь?
EDIT Возможно ли изменить внешний вид этого всплывающего окна? Я хочу, чтобы у него был тот же фон и клавиши, что и вся клавиатура, которую я создал/
Ответы
Ответ 1
Вы можете использовать класс PopupWindow
и заполнить его с помощью настраиваемого макета.
View custom = LayoutInflater.from(context)
.inflate(R.layout.your_layout, new FrameLayout(context));
PopupWindow popup = new PopupWindow(context);
popup.setContentView(custom);
и при длительном нажатии
//Get x,y based on the touch position
//Get width, height based on your layout
if(popup.isShowing()){
popup.update(x, y, width, height);
} else {
popup.setWidth(width);
popup.setHeight(height);
popup.showAtLocation(yourKeyboardView, Gravity.NO_GRAVITY, x, y);
}
При щелчке по всплывающему окну вы можете отклонить его
popup.dismiss();