• android 自定义软键盘


    哦然间发现了android.inputmethodservice.Keyboard类,即android可以自定义键盘类,做了一个简单例子供大家参考,

    首先看看效果图:




    键盘内容布局:keycontent.xml

    <?xml version="1.0" encoding="utf-8"?>
    <Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
        android:keyWidth="25%p"
        android:horizontalGap="0px"
        android:verticalGap="0px"
        android:keyHeight="50dip">
        <Row>
            <Key android:codes="49" android:keyLabel="1" />
            <Key android:codes="50" android:keyLabel="2" />
            <Key android:codes="51" android:keyLabel="3" />
            <Key android:codes="57419"
                android:keyEdgeFlags="right"
                android:keyIcon="@drawable/keyboard_capslock" />
        </Row>
        <Row>
            <Key android:codes="52" android:keyLabel="4" />
            <Key android:codes="53" android:keyLabel="5" />
            <Key android:codes="54" android:keyLabel="6" />
            <Key android:codes="57421"
                android:keyEdgeFlags="right"
                android:keyIcon="@drawable/keyboard_big_capslock" />
        </Row>
        <Row>
            <Key android:codes="55" android:keyLabel="7" />
            <Key android:codes="56" android:keyLabel="8" />
            <Key android:codes="57" android:keyLabel="9" />
            <Key android:codes="-5"
                android:keyEdgeFlags="right"
                android:isRepeatable="true"
                android:keyLabel="delete"
                android:keyIcon="@drawable/keyboard_delete" />
        </Row>
        <Row>
            <Key android:codes="-3" android:keyIcon="@drawable/keyboard_return" />
            <Key android:codes="48" android:keyLabel="0" />
            <Key android:codes="88" android:keyLabel="X" />
        </Row>
    </Keyboard>

    键盘布局 keyboardview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <EditText 
            android:id="@+id/edit"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />
        <android.inputmethodservice.KeyboardView
            android:id="@+id/keyboard_view"
            android:visibility="gone"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true" />
    </RelativeLayout>


    KeyboardActivity;


    package com.pioneersoft.temp;
    
    import android.app.Activity;
    import android.inputmethodservice.Keyboard;
    import android.inputmethodservice.KeyboardView;
    import android.inputmethodservice.KeyboardView.OnKeyboardActionListener;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.InputType;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.EditText;
    
    public class KeyboardActivity extends Activity{
    
    	EditText edit;
    	KeyboardView keyboardView;
    	
    	@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.keyboardview);
     
            edit = (EditText)findViewById(R.id.edit);
            edit.setInputType(InputType.TYPE_NULL);
            edit.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    showKeyboard();
                }
            });
     
            keyboardView = (KeyboardView)findViewById(R.id.keyboard_view);
            keyboardView.setKeyboard(new Keyboard(this, R.layout.keycontent));
            keyboardView.setEnabled(true);
            keyboardView.setPreviewEnabled(true);
            keyboardView.setOnKeyboardActionListener(new OnKeyboardActionListener() {
                @Override
                public void onKey(int primaryCode, int[] keyCodes) {
                    Editable editable = edit.getText();
                    int start = edit.getSelectionStart();
                    if (primaryCode == Keyboard.KEYCODE_CANCEL) {
                        hideKeyboard();
                    } else if (primaryCode == Keyboard.KEYCODE_DELETE) {
                        if (editable != null && editable.length() > 0) {
                            editable.delete(start - 1, start);
                        }
                    } else if (primaryCode == 57419) { // go left
                        if (start > 0) {
                            edit.setSelection(start - 1);
                        }
                    } else if (primaryCode == 57421) { // go right
                        if (start < edit.length()) {
                            edit.setSelection(start + 1);
                        }
                    } else {
                        editable.insert(start, Character.toString((char)primaryCode));
                    }
                }
    
    			@Override
    			public void onPress(int primaryCode) {
    				// TODO Auto-generated method stub
    				
    			}
    
    			@Override
    			public void onRelease(int primaryCode) {
    				// TODO Auto-generated method stub
    				
    			}
    
    			@Override
    			public void onText(CharSequence text) {
    				// TODO Auto-generated method stub
    				
    			}
    
    			@Override
    			public void swipeDown() {
    				// TODO Auto-generated method stub
    				
    			}
    
    			@Override
    			public void swipeLeft() {
    				// TODO Auto-generated method stub
    				
    			}
    
    			@Override
    			public void swipeRight() {
    				// TODO Auto-generated method stub
    				
    			}
    
    			@Override
    			public void swipeUp() {
    				// TODO Auto-generated method stub
    				
    			}
            });
        }
     
        private void showKeyboard() {
            int visibility = keyboardView.getVisibility();
            if (visibility == View.GONE || visibility == View.INVISIBLE) {
                keyboardView.setVisibility(View.VISIBLE);
            }
        }
     
        private void hideKeyboard() {
            int visibility = keyboardView.getVisibility();
            if (visibility == View.VISIBLE) {
                keyboardView.setVisibility(View.INVISIBLE);
            }
        }
    	
    }
    

    以上就是自定义键盘布局的内容,如需详细内容需要参考api。



  • 相关阅读:
    IT黑马-面向对象
    软路由系统记录
    网工笔记
    肖哥HCNP-正式篇笔记
    肖哥HCNP-学前准备篇笔记
    致良知简短笔记
    黑马班笔记
    正则表达示 for Python3
    小甲鱼Python3笔记
    linux命令-jdk及mysql安装操作
  • 原文地址:https://www.cnblogs.com/happyxiaoyu02/p/6818964.html
Copyright © 2020-2023  润新知