android 自定义键盘,代码实现自定义属性(自定义键盘背景,各个键的背景等)

由于工作需要,所以接触了自定义键盘。但是发现自己写的键盘太过丑陋了一些。废话不多说,先上图

   

第一张是修改后的。第二张是修改钱的。这基本上就是

OK。接下来就是重点了。

android的keyboardview的属性中是有keybackground 的,但是在使用的时候,却发现没有生效。仔细看了下源码才发现。下面的这句话,把属性集合给设置成了空。所以就键盘的属性就一直无法生效。

KeyboardView mKeyboardView = new KeyboardView(this, null);  

悲剧发生了。就要想解决办法。这里既然知道是属性集合被置空了。那么就设置属性集合被。查阅api发现。方法挺多的。就选用了其中一种方法。

    XmlPullParser parser =activity.getResources().getXml(R.layout.keyboardview);
         AttributeSet attributes = Xml.asAttributeSet(parser);

         int type;
        try{
            while ((type = parser.next()) != XmlPullParser.START_TAG &&
                    type != XmlPullParser.END_DOCUMENT) {
                // Empty
            }  

            if (type != XmlPullParser.START_TAG) {
                Log.e("","the xml file is error!\n");
            }
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Log.d("",""+parser.getAttributeCount());
        KeyboardView mKeyboardView = new KeyboardView(this, attributes);
        mKeyboardView.setFocusable(true);
        mKeyboardView.setFocusableInTouchMode(true);
        mKeyboardView.setId(R.id.keyboard_view);
        mKeyboardView.setVisibility(View.GONE);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT);
        lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
        RelativeLayout rlyt = new RelativeLayout(this);
        rlyt.addView(mKeyboardView, lp);
keyboardview.xml 中存放的是键盘keyboardview的属性集合。在这个地方设置集合不怕不会生效的。
<?xml version="1.0" encoding="utf-8"?>
<android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="@color/lightblack"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:keyBackground="@drawable/btn_keyboard_key"
    android:keyTextColor="@color/white"
    android:visibility="gone" />

就是这样的实现了键盘的自定义皮肤。

时间: 2024-07-30 03:19:59

android 自定义键盘,代码实现自定义属性(自定义键盘背景,各个键的背景等)的相关文章

Qt on Android: Qt Quick事件处理之鼠标、键盘、定时器

在<Qt on Android: Qt Quick 事件处理之信号与槽>中介绍了 QML 中如何使用内建类型的信号以及如何自定义信号,这次我们来看看如何处理鼠标.键盘.定时器等事件.这些时间在处理时,通常是通过信号来完成的. 广而告之:我正在参加 CSDN 博文大赛,请给我的参赛文章<Qt on Android: Qt Quick 事件处理之信号与槽>投票,谢谢. 鼠标事件处理 桌面开发的话,难免要处理鼠标事件-- 变色矩形示例 看一个简单的处理鼠标事件的例子,先看代码(handl

安卓-常用代码:改变软键盘右下角确定键样式

效果图: 默认图: 1.在XML中设置EditText的模式 <EditText android:singleLine="true" android:imeOptions="actionDone" android:id="@+id/searchEt" android:layout_width="match_parent" android:layout_height="40dp" android:lay

Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText.对于这种情况的处理其实很简单,只需要在AndroidManifest文件中对activity设置:android:windowSoftInputMode的值adjustPan或者adjustResi

Android高仿微信表情输入与键盘输入(详细实现分析)

转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/52126391 出自[zejian的博客] ??表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决思路,再加上研究了好几个开源项目的代码,最后终于苦逼地整合出比较不错的实现效果(这里不仅给出了实现方案,还提供一个

Android View体系(十一)自定义ViewGroup

相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源码解析Scroller Android View体系(五)从源码解析View的事件分发机制 Android View体系(六)从源码解析Activity的构成 Android View体系(七)从源码解析View的measure流程 Android View体系(八)从源码解析View的layout

Android 手把手带你玩转自定义相机

概述 相机几乎是每个APP都要用到的功能,万一老板让你定制相机方不方?反正我是有点方.关于相机的两天奋斗总结免费送给你. 启动相机的两种方式 1.直接启动系统相机 Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); startActivity(intent); 或者指定返回图片的名称mCurrentPhotoFile Intent intent = new Intent(MediaSto

使用Kotlin开发Android应用(IV):自定义视图和Android扩展

使用Kotlin开发Android应用(IV):自定义视图和Android扩展 @author ASCE1885的 Github 简书 微博 CSDN 原文链接 在读完扩展函数和默认值这篇文章之后,那么接下来要介绍什么呢?在本系列第一篇文章中我们说过,Kotlin使得Android开发更加简单,本文我们将进一步作介绍. 自定义视图 你应该还记得,在说到Kotlin的局限性时,我们提到了在Kotlin早期版本(M10之前)是不支持自定义视图的,因为当时只能为每个类创建一个构造函数.这通常是足够的,

Android之——史上最简单自定义开关按钮的实现

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/48102871 很多时候,我们在很多无论是Android还是IOS的APP中都会遇到这样的一种效果,有一个按钮,我们点击一下,便会滑动一下,一会显示"开",一会显示"关",这便是开关按钮了,比如:很多Android手机的设置功能里,就有很多功能是用开关按钮实现的,那么这些开关按钮时如何实现的呢?下面,就让我们一起来实现这个功能吧. 一.原理 我们在界面

HTML自定义标签与标签自定义属性

大部分浏览器支持自定义HTML标签和为标准标签自定义属性,而且很多浏览器对这两种自定义行为的支持都很直接了当. 自定义HTML标签 在firefox.chrome这种现代浏览器里,自定义标签很简单,就像标准的标签那样写就可以了,而且CSS和JavaScript存取自定义标签和标准标签并无二致. 1 2 3 4 5 6 7 8 9 <foo id="idFoo" style="color:red" data-bar="bar">foo