android内置键盘实例

android内置键盘开发,刚听到的时候其实很懵逼的 。一听这个感觉是要从系统层入手。其实内置在应用中的keyboard没有想象中的那么难。

1、 布局文件 系统提供的KeyboardView 属性都是基本属性

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FCFCFC" >

    <RelativeLayout
        android:id="@+id/top_layout"
        android:layout_width="match_parent"
        android:layout_height="50dip"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="#3E98FF"
        android:orientation="vertical" >

        <TextView
            android:layout_width="match_parent"
            android:layout_height="50dip"
            android:gravity="center"
            android:text="添加车辆"
            android:textColor="#FFFFFF"
            android:textSize="16sp" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/gsxx_layout"
        android:layout_width="match_parent"
        android:layout_height="60dip"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/top_layout"
        android:background="#FFFFFF" >

        <TextView
            android:id="@+id/imageView1"
            android:layout_width="60dip"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dip"
            android:gravity="center_vertical"
            android:text="品牌:"
            android:textColor="#2F2F2F"
            android:textSize="15sp"
            tools:ignore="ContentDescription" />

        <EditText
            android:id="@+id/tv_carbrand"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="10dip"
            android:layout_toRightOf="@+id/imageView1"
            android:background="@color/transparent"
            android:gravity="center_vertical"
            android:hint="输入车辆品牌"
            android:textColor="#2F2F2F"
            android:textSize="15sp" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_alignParentBottom="true"
            android:background="#E4E4E4" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/gsdt_layout"
        android:layout_width="match_parent"
        android:layout_height="60dip"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/gsxx_layout"
        android:background="#FFFFFF" >

        <TextView
            android:id="@+id/imageView3"
            android:layout_width="60dip"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dip"
            android:gravity="center_vertical"
            android:text="型号:"
            android:textColor="#2F2F2F"
            android:textSize="15sp"
            tools:ignore="ContentDescription" />

        <EditText
            android:id="@+id/tv_cartype"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="10dip"
            android:layout_toRightOf="@+id/imageView3"
            android:background="@color/transparent"
            android:gravity="center_vertical"
            android:hint="输入车辆型号"
            android:textColor="#2F2F2F"
            android:textSize="15sp" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_alignParentBottom="true"
            android:background="#E4E4E4" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/gswh_layout"
        android:layout_width="match_parent"
        android:layout_height="60dip"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/gsdt_layout"
        android:background="#FFFFFF" >

        <TextView
            android:id="@+id/imageView7"
            android:layout_width="60dip"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10dip"
            android:gravity="center_vertical"
            android:text="车牌:"
            android:textColor="#2F2F2F"
            android:textSize="15sp"
            tools:ignore="ContentDescription" />

        <EditText
            android:id="@+id/tv_carplate"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="10dip"
            android:layout_toRightOf="@+id/imageView7"
            android:background="@color/transparent"
            android:gravity="center_vertical"
            android:hint="输入车辆车牌"
            android:textColor="#2F2F2F"
            android:textSize="15sp" />

        <View
            android:layout_width="match_parent"
            android:layout_height="0.5dp"
            android:layout_alignParentBottom="true"
            android:background="#E4E4E4" />
    </RelativeLayout>

    <Button
        android:id="@+id/tjcl_btn"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/gswh_layout"
        android:layout_margin="15dp"
        android:gravity="center"
        android:text="添加"
        android:textColor="#FFFFFF"
        android:textSize="15sp" />


    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <android.inputmethodservice.KeyboardView
            android:id="@+id/keyboard_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:background="@color/gray"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:paddingRight="20dp"
            android:keyTextColor="@color/keybord_bg"
            android:keyBackground="@drawable/btn_keyboard_key"
            android:visibility="gone" />
    </RelativeLayout>
</RelativeLayout>

2、 键盘英文布局xml

<?xml version="1.0" encoding="UTF-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:horizontalGap="0.0px"
    android:keyHeight="@dimen/key_height"
    android:keyWidth="6.8%p"
    android:verticalGap="20px" >

     <Row>
        <Key
            android:codes="48"
            android:horizontalGap="4%p"
            android:keyEdgeFlags="left"
            android:keyIcon="@drawable/zero" />
        <Key
            android:codes="49"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/one" />
        <Key
            android:codes="50"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/two" />
        <Key
            android:codes="51"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/three" />
        <Key
            android:codes="52"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/four" />
        <Key
            android:codes="53"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/five" />
        <Key
            android:codes="54"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/six" />
        <Key
            android:codes="55"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/seven" />
        <Key
            android:codes="56"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/eight" />
        <Key
            android:codes="57"
            android:horizontalGap="2.8%p"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/nice" />
    </Row>
    <Row>
        <Key
            android:codes="81"
            android:horizontalGap="4%p"
            android:keyEdgeFlags="left"
            android:keyIcon="@drawable/q" />
        <Key
            android:codes="87"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/w" />
        <Key
            android:codes="69"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/e" />
        <Key
            android:codes="82"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/r" />
        <Key
            android:codes="84"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/t" />
        <Key
            android:codes="89"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/y" />
        <Key
            android:codes="85"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/u" />
        <Key
            android:codes="73"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/i" />
        <Key
            android:codes="79"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/o" />
        <Key
            android:codes="80"
            android:horizontalGap="2.8%p"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/p" />
    </Row>
    <Row>
        <Key
            android:codes="65"
            android:horizontalGap="8.2%p"
            android:keyEdgeFlags="left"
            android:keyIcon="@drawable/a"/>
        <Key
            android:codes="83"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/s"/>
        <Key
            android:codes="68"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/d"/>
        <Key
            android:codes="70"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/f"/>
        <Key
            android:codes="71"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/g" />
        <Key
            android:codes="72"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/h"/>
        <Key
            android:codes="74"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/j"/>
        <Key
            android:codes="75"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/k"/>
        <Key
            android:codes="76"
            android:horizontalGap="2.8%p"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/l"/>
    </Row>
    <Row>
        <Key
            android:codes="-2"
            android:isModifier="true"
            android:isSticky="true"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/province"
            android:horizontalGap="2%p"
            android:keyWidth="8%p"/>
        <Key
            android:horizontalGap="7.5%p"
            android:codes="90"
            android:keyIcon="@drawable/z" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="88"
            android:keyIcon="@drawable/x" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="67"
            android:keyIcon="@drawable/c" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="86"
            android:keyIcon="@drawable/v" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="66"
            android:keyIcon="@drawable/b" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="78"
            android:keyIcon="@drawable/n" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="77"
            android:keyIcon="@drawable/m" />
        <Key
            android:codes="-5"
            android:isRepeatable="true"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/delete"
             android:horizontalGap="7.5%p"
            android:keyWidth="8%p" />
    </Row>
</Keyboard>

中文布局xml

<?xml version="1.0" encoding="utf-8"?>
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="6.8%p" android:horizontalGap="20px"
    android:verticalGap="20px" android:keyHeight="@dimen/key_height">
     <Row>
        <Key
            android:codes="-48"
            android:horizontalGap="4%p"
            android:keyEdgeFlags="left"
            android:keyIcon="@drawable/bj"/>
        <Key
            android:codes="-49"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/tj" />
        <Key
            android:codes="-50"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/hbs" />
        <Key
            android:codes="-51"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/sd" />
        <Key
            android:codes="-52"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/sx" />
        <Key
            android:codes="-53"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/nmg" />
        <Key
            android:codes="-54"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/ll" />
        <Key
            android:codes="-55"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/jl" />
        <Key
            android:codes="-56"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/hlj" />
        <Key
            android:codes="-57"
            android:horizontalGap="2.8%p"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/sh" />
    </Row>
    <Row>
        <Key
            android:codes="-58"
            android:horizontalGap="4%p"
            android:keyEdgeFlags="left"
            android:keyIcon="@drawable/js" />
        <Key
            android:codes="-59"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/zj" />
        <Key
            android:codes="-60"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/ah" />
        <Key
            android:codes="-61"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/fj" />
        <Key
            android:codes="-62"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/jx" />
        <Key
            android:codes="-63"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/yu" />
        <Key
            android:codes="-64"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/hb" />
        <Key
            android:codes="-65"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/hn" />
        <Key
            android:codes="-66"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/gd" />
        <Key
            android:codes="-67"
            android:horizontalGap="2.8%p"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/gx" />
    </Row>
    <Row>
        <Key
            android:codes="-68"
            android:horizontalGap="13%p"
            android:keyEdgeFlags="left"
            android:keyIcon="@drawable/cq"/>
        <Key
            android:codes="-69"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/sc"/>
        <Key
            android:codes="-70"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/gz"/>
        <Key
            android:codes="-71"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/yn"/>
        <Key
            android:codes="-72"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/xz" />
        <Key
            android:codes="-73"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/sxs"/>
        <Key
            android:codes="-74"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/gs"/>
        <Key
            android:codes="-75"
            android:horizontalGap="2.8%p"
            android:keyIcon="@drawable/qh"/>
    </Row>
    <Row>
        <Key
            android:codes="-2"
            android:isModifier="true"
            android:isSticky="true"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/abc"
            android:horizontalGap="2%p"
            android:keyWidth="8%p"/>
        <Key
            android:horizontalGap="12.3%p"
            android:codes="-76"
            android:keyIcon="@drawable/hns" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="-77"
            android:keyIcon="@drawable/xj" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="-78"
            android:keyIcon="@drawable/xg" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="-79"
            android:keyIcon="@drawable/am" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="-80"
            android:keyIcon="@drawable/tb" />
        <Key
            android:horizontalGap="2.8%p"
            android:codes="-81"
            android:keyIcon="@drawable/lx" />
        <Key
            android:codes="-5"
            android:isRepeatable="true"
            android:keyEdgeFlags="right"
            android:keyIcon="@drawable/delete"
             android:horizontalGap="12.3%p"
            android:keyWidth="8%p" />
    </Row>
</Keyboard>

keyheight:代表按键的高度,取值同上。
horizontalGap:代表按键前的间隙(水平方向)
keyWidth:代表按键的宽度,可以为精确值或者相对
verticalGap:代表按键前的间隙(垂直方向)
keyEdgeFlags:指定按键的对齐指令,取值为left或者right
keyIcon:代表按键显示的图标内容(一般不用图片显示会很模糊)
keyOutputText:指定按键输出的文本内容,取值为字
isRepeatable:指定按键是否是可重复的(长按重复按键功能)
codes:代表按键对应的输出值(数字英文对应相应的ASCII表也可以自己填写判断)

3、KeyboardUtils键盘控制类

package zw.com.keybord;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


import android.app.Activity;
import android.content.Context;
import android.inputmethodservice.Keyboard;
import android.inputmethodservice.KeyboardView;
import android.inputmethodservice.Keyboard.Key;
import android.inputmethodservice.KeyboardView.OnKeyboardActionListener;
import android.text.Editable;
import android.view.View;
import android.widget.EditText;

public class KeyboardUtil {
    private Context ctx;
    private Activity act;
    private static KeyboardView keyboardView;
    private Keyboard k1;// 字母键盘
    private Keyboard k2;// 数字键盘
    public boolean isnun = false;// 是否省份
    public boolean isupper = false;// 是否大写

    private EditText ed;

    private Map<Integer, String> map ;
    public KeyboardUtil(Activity act, Context ctx, EditText edit) {
        this.act = act;
        this.ctx = ctx;
        this.ed = edit;
        putMap();
        k1 = new Keyboard(ctx, R.xml.qwerty);
        k2 = new Keyboard(ctx, R.xml.symbols);
        keyboardView = (KeyboardView) act.findViewById(R.id.keyboard_view);
        keyboardView.setKeyboard(k2);
        keyboardView.setEnabled(true);
        keyboardView.setPreviewEnabled(true);
        keyboardView.setOnKeyboardActionListener(listener);
    }


    private void putMap(){
        map = new HashMap<Integer, String>();
        map.put(-48, "京");
        map.put(-49, "津");
        map.put(-50, "冀");
        map.put(-51, "鲁");
        map.put(-52, "晋");
        map.put(-53, "蒙");
        map.put(-54, "辽");
        map.put(-55, "吉");
        map.put(-56, "黑");
        map.put(-57, "沪");
        map.put(-58, "苏");
        map.put(-59, "浙");
        map.put(-60, "皖");
        map.put(-61, "闽");
        map.put(-62, "赣");
        map.put(-63, "豫");
        map.put(-64, "鄂");
        map.put(-65, "湘");
        map.put(-66, "粤");
        map.put(-67, "桂");
        map.put(-68, "渝");
        map.put(-69, "川");
        map.put(-70, "贵");
        map.put(-71, "云");
        map.put(-72, "藏");
        map.put(-73, "陕");
        map.put(-74, "甘");
        map.put(-75, "青");
        map.put(-76, "琼");
        map.put(-77, "新");
        map.put(-78, "港");
        map.put(-79, "澳");
        map.put(-80, "台");
        map.put(-81, "宁");
    }

    private OnKeyboardActionListener listener = new OnKeyboardActionListener() {
        @Override
        public void swipeUp() {
        }

        @Override
        public void swipeRight() {
        }

        @Override
        public void swipeLeft() {
        }

        @Override
        public void swipeDown() {
        }

        @Override
        public void onText(CharSequence text) {
        }

        @Override
        public void onRelease(int primaryCode) {
        }

        @Override
        public void onPress(int primaryCode) {
        }

        @Override
        public void onKey(int primaryCode, int[] keyCodes) {
            Editable editable = ed.getText();
            int start = ed.getSelectionStart();
            if (primaryCode == Keyboard.KEYCODE_CANCEL) {// 完成
                hideKeyboard();
            } else if (primaryCode == Keyboard.KEYCODE_DELETE) {// 回退
                if (editable != null && editable.length() > 0) {
                    if (start > 0) {
                        editable.delete(start - 1, start);
                    }
                }
            } else if (primaryCode == Keyboard.KEYCODE_SHIFT) {// 大小写切换
                changeKey();
                keyboardView.setKeyboard(k1);

            } else if (primaryCode == Keyboard.KEYCODE_MODE_CHANGE) {// 数字键盘切换
                if (isnun) {
                    isnun = false;
                    keyboardView.setKeyboard(k2);
                } else {
                    isnun = true;
                    keyboardView.setKeyboard(k1);
                }
            } else if (primaryCode < -47 && primaryCode > -82) { // 如果返回codes在-47和-82之间  添加指定中文
                editable.insert(start, map.get(primaryCode));
            }else {
                editable.insert(start, Character.toString((char) primaryCode));
            }
        }
    };

    /**
     * 键盘大小写切换
     */
    private void changeKey() {
        List<Key> keylist = k1.getKeys();
        if (isupper) {//大写切换小写
            isupper = false;
            for(Key key:keylist){
                if (key.label!=null && isword(key.label.toString())) {
                    key.label = key.label.toString().toLowerCase();
                    key.codes[0] = key.codes[0]+32;
                }
            }
        } else {//小写切换大写
            isupper = true;
            for(Key key:keylist){
                if (key.label!=null && isword(key.label.toString())) {
                    key.label = key.label.toString().toUpperCase();
                    key.codes[0] = key.codes[0]-32;
                }
            }
        }
    }

    public void showKeyboard() {
//        int visibility = keyboardView.getVisibility();
//        if (visibility == View.GONE || visibility == View.INVISIBLE) {
            keyboardView.setVisibility(View.VISIBLE);
//        }
    }

    public void hideKeyboard() {
//        int visibility = keyboardView.getVisibility();
//        if (visibility == View.VISIBLE) {
            keyboardView.setVisibility(View.GONE);
//        }
    }

    private boolean isword(String str){
        String wordstr = "abcdefghijklmnopqrstuvwxyz";
        if (wordstr.indexOf(str.toLowerCase())>-1) {
            return true;
        }
        return false;
    }

}

4、主页面

package zw.com.keybord;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.InputType;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.Toast;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by 15090 on 2016/11/27.
 */

public class MainActivity  extends Activity implements View.OnClickListener,View.OnTouchListener{

    private EditText tv_carplate, tv_cartype, tv_carbrand;

    private KeyboardUtil mKeyboardUtil;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }
    private void initView() {
        tv_carplate = (EditText) findViewById(R.id.tv_carplate);
        tv_cartype = (EditText) findViewById(R.id.tv_cartype);
        tv_carbrand = (EditText) findViewById(R.id.tv_carbrand);
        tv_carplate.setOnTouchListener(this);
        tv_carbrand.setOnTouchListener(this);
        tv_cartype.setOnTouchListener(this);
    }

    @Override
    public void onClick(View key) {
        switch (key.getId()) {

            case R.id.tjcl_btn:
                EditText editText_1 = (EditText) findViewById(R.id.tv_carbrand);

                String str_pp = editText_1.getText().toString();

                if (null != str_pp && str_pp.trim().length() > 0) {
                    EditText editText_2 = (EditText) findViewById(R.id.tv_cartype);

                    String str_xh = editText_2.getText().toString();
                    if (null != str_xh && str_xh.trim().length() > 0) {
                        EditText editText_3 = (EditText) findViewById(R.id.tv_carplate);

                        String str_cp = editText_3.getText().toString();
                        Pattern pattern = Pattern
                                .compile("^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$");
                        Matcher matcher = pattern.matcher(str_cp);
                        if (matcher.matches()) {
//                            addCar(str_pp, str_xh, str_cp);
                            Toast.makeText(this,"输入成功",Toast.LENGTH_SHORT).show();
                        } else {
                            Toast.makeText(this,"车牌号格式不对!",Toast.LENGTH_SHORT).show();
                        }
//                  if (null != str_cp && str_cp.trim().length() > 0) {
//                      Toast.makeText(AddCarActivity.this, "添加车辆成功!",
//                              Toast.LENGTH_SHORT).show();
//                      addCar(str_pp, str_xh, str_cp);
//                  } else {
//                      Toast.makeText(AddCarActivity.this, "车牌不能为空!",
//                              Toast.LENGTH_SHORT).show();
//                  }
                    } else {
                        Toast.makeText(this,"型号不能为空!",Toast.LENGTH_SHORT).show();

                    }
                } else {
                    Toast.makeText(this,"品牌不能为空!",Toast.LENGTH_SHORT).show();

                }

                break;

            default:
                break;
        }
    }
    @Override
    public boolean onTouch(View v, MotionEvent arg1) {
        switch (v.getId()) {
            case R.id.tv_carplate:
                int inputback = tv_carplate.getInputType();
                tv_carplate.setInputType(InputType.TYPE_NULL);
                if (mKeyboardUtil == null) {
                    mKeyboardUtil = new KeyboardUtil(this,
                            getApplicationContext(), tv_carplate);
                    mKeyboardUtil.showKeyboard();
                } else {
                    mKeyboardUtil.showKeyboard();
                }

                manageSoftInput(getApplicationContext(), tv_carbrand, true);
               manageSoftInput(getApplicationContext(), tv_cartype, true);
                tv_carplate.setInputType(inputback);
                break;
            case R.id.tv_carbrand:
                if (mKeyboardUtil != null) {
                    mKeyboardUtil.hideKeyboard();
                }
            case R.id.tv_cartype:
                if (mKeyboardUtil != null) {
                    mKeyboardUtil.hideKeyboard();
                }
                break;
            default:
                break;
        }
        return false;
    }

    /**
     * 键盘操作
     *
     * @param isColse
     *            是否要关闭 true 关闭,false 打开
     */
    public static void manageSoftInput(Context ctx, EditText editText,
                                       boolean isColse) {
        InputMethodManager imm = (InputMethodManager) ctx
                .getSystemService(Context.INPUT_METHOD_SERVICE);
        if (isColse) {
            imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
        } else {
            imm.showSoftInput(editText, 0);
        }

    }
}

好了,应用内置键盘就这样结束了。

源码连接

猜你喜欢

转载自blog.csdn.net/zouwei_199388/article/details/53462725
今日推荐