android 软键盘的POPUP布局的问题解决

作者:代码日志 时间:2022-03-22 17:53:30 

我正在开发一个软键盘,做得很好,但是我不知道如何自定义一个长按键的弹出窗口.

我的键盘视图:


<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/keyboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:keyPreviewLayout="@layout/preview"
android:keyBackground="@drawable/key_selector"
android:shadowRadius="0.0"
android:keyTextColor="#000000"
/>

我的键盘布局:


<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:keyHeight="10%p">

<Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p">
<Key android:codes="113" android:keyLabel="q" />
<Key android:codes="119" android:keyLabel="w" />
<Key android:codes="101" android:keyLabel="e"
 />
<Key android:codes="114" android:keyLabel="r" />
<Key android:codes="116" android:keyLabel="t" />
<Key android:codes="121" android:keyLabel="y"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="y&yacute;&yuml;"/>
<Key android:codes="117" android:keyLabel="u"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="uúùũ&ucirc;ü"/>
<Key android:codes="105" android:keyLabel="i"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="iíìĩ&icirc;&iuml;"/>
<Key android:codes="111" android:keyLabel="o"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="oóò &ocirc;&ouml;" />
<Key android:codes="112" android:keyLabel="p" />
</Row>
<Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p">
<Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="5%p"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="aáà &acirc;&auml;"/>
<Key android:codes="115" android:keyLabel="s" />
<Key android:codes="100" android:keyLabel="d" />
<Key android:codes="102" android:keyLabel="f" />
<Key android:codes="103" android:keyLabel="g" />
<Key android:codes="104" android:keyLabel="h" />
<Key android:codes="106" android:keyLabel="j" />
<Key android:codes="107" android:keyLabel="k" />
<Key android:codes="108" android:keyLabel="l" />
</Row>
<Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p">
<Key android:codes="3"  android:keyIcon="@drawable/keyboard_shift_off"
  android:keyHeight="7.6%p" android:keyWidth="13.7%p"/>
<Key android:codes="122" android:keyLabel="z" android:horizontalGap="1%p"/>
<Key android:codes="120" android:keyLabel="x" />
<Key android:codes="99"  android:keyLabel="c"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="c&ccedil;"/>
<Key android:codes="118" android:keyLabel="v" />
<Key android:codes="98"  android:keyLabel="b" />
<Key android:codes="110" android:keyLabel="n"
  android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="n&ntilde;"/>
<Key android:codes="109" android:keyLabel="m" />
<Key android:codes="-5"  android:keyIcon="@drawable/sym_keyboard_delete_dim"
 android:keyHeight="7.6%p" android:keyWidth="13.7%p"
 android:horizontalGap="1%p"/>
</Row>
<Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p">
<Key android:codes="-16" android:keyIcon="@drawable/keyboard_symbol"
  android:keyHeight="7.6%p" android:keyWidth="18.7%p"/>
<Key android:codes="44"  android:keyLabel="," android:horizontalGap="1%p"/>
<Key android:codes="32"  android:keyIcon="@drawable/sym_keyboard_feedback_space" android:keyWidth="40%p"/>
<Key android:codes="46"  android:keyLabel="."/>
<Key android:codes="-3"  android:keyIcon="@drawable/keyboard_go"
 android:keyHeight="7.6%p" android:keyWidth="18.5%p" android:horizontalGap="1%p"/>
</Row>

键盘弹出XML:


<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
android:keyWidth="10%p"
android:keyHeight="10%p">
</Keyboard>

我尝试将keyBackground和背景属性放在任何地方,但不成功.我试图把:


android:popupLayout="@layout/keyboard"

…在keyboardView上得到nullpointer,也许我在该参数中输入了错误的XML?

在我放在这里的键盘弹出式XML中:


android:popupKeyboard="@xml/keyboard_popup"

我可以改变布局的大小,按键大小,键间距等等,但不能改变颜色或背景.

关键预览也做得很好,我把它放在keyboardView上:


android:keyPreviewLayout="@layout/preview"

…它的工作原理我认为弹出窗口应该是一样的,但不是这样.

如何自定义出现长按键的弹出式窗口?

那么这不是我正在寻找的,而是解决了这个问题.

我自己创建了键盘视图,并弹出一个弹出窗口来显示一个键长时间按下.


public class MyKeyboardView extends KeyboardView{
@Override
protected boolean onLongPress(final Key popupKey) {
 final View custom = LayoutInflater.from(context)
 .inflate(R.layout.popup_layout, new FrameLayout(context));
 popup = new PopupWindow(context);
 popup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
 popup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
 popup.showAtLocation(this, Gravity.NO_GRAVITY, popupKey.x, popupKey.y-50);
}
}

这样,您可以在xml中以任何方式自定义弹出窗口.

但是这不是正确的答案,如果你知道一个更好的方法来回答这个问题.

http://stackoverflow.com/questions/34799775/soft-keyboards-popup-layout

来源:https://codeday.me/bug/20181015/296381.html

标签:android,软键盘,POPUP布局
0
投稿

猜你喜欢

  • Android实现APP秒表功能

    2022-11-13 13:58:26
  • 分享Java常用几种加密算法(四种)

    2022-05-14 17:59:19
  • 浅谈Java锁的膨胀过程以及一致性哈希对锁膨胀的影响

    2023-06-03 15:03:38
  • Android Flutter实现有趣的页面滚动效果

    2023-02-14 06:58:10
  • Android组合控件自定义标题栏

    2021-11-04 01:12:36
  • Java 日期转换详解及实例代码

    2021-06-30 02:15:43
  • Java Map简介_动力节点Java学院整理

    2023-06-03 20:27:03
  • 在Visual Studio上构建C++的GUI框架wxWidgets的开发环境

    2023-04-12 01:02:06
  • 使用IntelliJ IDEA 15和Maven创建Java Web项目(图文)

    2023-08-26 07:10:15
  • C++内存对齐的实现

    2023-11-22 00:42:20
  • Java实现去除文档阴影的示例代码

    2023-08-31 11:45:48
  • spring Roo安装使用简介

    2023-04-10 09:31:50
  • Java设置PDF跨页表格重复显示表头行的步骤详解

    2023-09-21 23:50:33
  • c#实现sqlserver事务处理示例

    2022-03-28 19:39:50
  • SpringBoot配置SSL同时支持http和https访问实现

    2023-04-25 19:42:45
  • Spring Boot + Mybatis-Plus实现多数据源的方法

    2023-11-13 15:01:46
  • SpringBoot后端进行数据校验JSR303的使用详解

    2022-02-19 01:15:31
  • Java 数据结构与算法系列精讲之字符串暴力匹配

    2021-10-06 05:43:27
  • 谈谈Hashmap的容量为什么是2的幂次问题

    2022-12-27 18:42:35
  • Android 实现自定义圆形listview功能的实例代码

    2022-06-20 06:58:29
  • asp之家 软件编程 m.aspxhome.com