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

 更新时间:2018年10月15日 09:56:21   作者:代码日志  
这篇文章主要介绍了android 软键盘的POPUP布局的问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

我的键盘视图:

<?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ýÿ"/>
 <Key android:codes="117" android:keyLabel="u"
   android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="uúùũûü"/>
 <Key android:codes="105" android:keyLabel="i" 
   android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="iíìĩîï"/>
 <Key android:codes="111" android:keyLabel="o" 
   android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="oóò ôö" />
 <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áà âä"/>
 <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ç"/>
 <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ñ"/>
 <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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android架构组件LiveData使用详解

    Android架构组件LiveData使用详解

    这篇文章主要介绍了Android架构组件LiveData使用详解的相关资料,需要的朋友可以参考下
    2023-07-07
  • Android开发实现自动切换文字TextSwitcher功能示例

    Android开发实现自动切换文字TextSwitcher功能示例

    这篇文章主要介绍了Android开发实现自动切换文字TextSwitcher功能,结合实例形式详细分析了Android使用TextSwitcher实现文字自动切换的原理、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-03-03
  • Android 8.0的缓存大小和缓存清理接口方法

    Android 8.0的缓存大小和缓存清理接口方法

    今天小编就为大家分享一篇Android 8.0的缓存大小和缓存清理接口方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android模拟器中窗口截图存成文件实现思路及代码

    Android模拟器中窗口截图存成文件实现思路及代码

    Android模拟器内容是用OpenGL渲染的,所以用一般的编程截图(如PrintWindow()等)会是黑屏。这是因为画的东西放在framebuffer里 接下来介绍如何实现Android模拟器中窗口截图存成文件,感兴趣的朋友可以了解下哦
    2013-01-01
  • 实例讲解Android应用开发中Fragment生命周期的控制

    实例讲解Android应用开发中Fragment生命周期的控制

    这篇文章主要介绍了Android应用开发中Fragment生命周期的控制,Fragment依赖于Activity,所以生命周期方面也受Activity的影响,需要的朋友可以参考下
    2016-02-02
  • Android使用MMKV的记录

    Android使用MMKV的记录

    听说腾讯的mmkv很牛皮,可以替代SharedPreferences,主要用来保存设置,比如串口号、波特率、摄像头预览角度等等,本文重点给大家介绍Android使用MMKV的记录分享,感兴趣的朋友一起看看吧
    2021-10-10
  • Android实现左滑退出Activity的完美封装

    Android实现左滑退出Activity的完美封装

    这篇文章主要介绍了Android实现左滑退出Activity的完美封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Android利用Document实现xml读取和写入操作

    Android利用Document实现xml读取和写入操作

    这篇文章主要为大家详细介绍了Android利用Document实现xml读取和写入操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Flutter给控件实现钻石般的微光特效

    Flutter给控件实现钻石般的微光特效

    这篇文章主要给大家介绍了关于Flutter给控件实现钻石般的微光特效的相关资料,实现的效果非常不错,非常适合大家做开发的时候参考,需要的朋友可以参考下
    2021-08-08
  • Android 8.1 Launcher3实现动态指针时钟功能

    Android 8.1 Launcher3实现动态指针时钟功能

    这篇文章主要介绍了Android 8.1 Launcher3实现动态指针时钟功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07

最新评论