android KeyboardView使用

android自定義鍵盤
1、layout佈局
 <android.inputmethodservice.KeyboardView
            android:id="@+id/keyboard_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@drawable/keypad_bg_qwer"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:keyBackground="@drawable/btn_keyboard_key"
            android:keyTextColor="@color/black"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="0"
            android:visibility="gone" />


2、獲得KeyboardView對象


   Keyboard key= new Keyboard(ctx, R.xml.keyboard_qwerty);//獲得自定義佈局
   keyboardView = (KeyboardView) view.findViewById(R.id.keyboard_view);
   keyboardView.setKeyboard(key); //設置佈局
   keyboardView.setEnabled(true); //使能
   keyboardView.setPreviewEnabled(false); //禁止彈出
   keyboardView.setOnKeyboardActionListener(listener);//監聽
   
   
private OnKeyboardActionListener listener = new OnKeyboardActionListener() {

@Override
public void onKey(int primaryCode, int[] keyCodes) {
//按鈕的操作
}
}

3、自定義佈局
<?xml version="1.0" encoding="UTF-8"?>
<Keyboard android:keyWidth="8%p" android:keyHeight="40.0dip"
android:horizontalGap="0.0px" android:verticalGap="0.0px"
xmlns:android="http://schemas.android.com/apk/res/android">
 
   <Row android:keyWidth="8.25%p">
<Key android:codes="33" android:keyLabel="!"  android:keyEdgeFlags="left"/>
<Key android:codes="64" android:keyLabel="\@" />
<Key android:codes="35" android:keyLabel="#" />
<Key android:codes="36" android:keyLabel="$" />
<Key android:codes="37" android:keyLabel="%" />
<Key android:codes="94" android:keyLabel="^" />
<Key android:codes="38" android:keyLabel="&amp;" />
<Key android:codes="42" android:keyLabel="*" />
<Key android:codes="40" android:keyLabel="(" />
<Key android:codes="41" android:keyLabel=")" />
<Key android:codes="45" android:keyLabel="-" />
<Key android:codes="43" android:keyLabel="+" />
</Row>

    <Row android:keyWidth="8.25%p">
<Key android:codes="49" android:keyLabel="1"  android:keyEdgeFlags="left"/>
<Key android:codes="50" android:keyLabel="2" />
<Key android:codes="51" android:keyLabel="3" />
<Key android:codes="52" android:keyLabel="4" />
<Key android:codes="53" android:keyLabel="5" />
<Key android:codes="54" android:keyLabel="6" />
<Key android:codes="55" android:keyLabel="7" />
<Key android:codes="56" android:keyLabel="8" />
<Key android:codes="57" android:keyLabel="9" />
<Key android:codes="48" android:keyLabel="0" />
<Key android:codes="-5" android:keyWidth="16.5%p" android:keyEdgeFlags="right" android:isRepeatable="true"
android:keyIcon="@drawable/sym_keyboard_delete" />
</Row>

<Row android:keyWidth="8.25%p">
<Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
<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" />
<Key android:codes="117" android:keyLabel="u" />
<Key android:codes="105" android:keyLabel="i" />
<Key android:codes="111" android:keyLabel="o" />
<Key android:codes="112" android:keyLabel="p" />
<Key android:codes="123" android:keyLabel="{" />
<Key android:codes="125" android:keyLabel="}" android:keyEdgeFlags="right"/>
</Row>
<Row android:keyWidth="7.065%p">
    <Key android:codes="-1" android:keyWidth="14.142%p"
android:keyEdgeFlags="left" android:isModifier="true"
android:isSticky="true" android:keyIcon="@drawable/sym_keyboard_shift" />
<Key android:codes="97" android:keyLabel="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" />
<Key android:codes="58" android:keyLabel=":"  />
<Key android:codes="65500" android:keyWidth="14.000%p" android:keyEdgeFlags="right" android:keyLabel="清除" />
</Row>
<Row android:keyWidth="7.615%p">
   <Key android:codes="47" android:keyLabel="/" android:keyEdgeFlags="left"/>
<Key android:codes="92" android:keyLabel="\\"  />
<Key android:codes="122" android:keyLabel="z" />
<Key android:codes="120" android:keyLabel="x" />
<Key android:codes="99" android:keyLabel="c"  />
<Key android:codes="118" android:keyLabel="v" />
<Key android:codes="98" android:keyLabel="b"  />
<Key android:codes="110" android:keyLabel="n" />
<Key android:codes="109" android:keyLabel="m" />
<Key android:codes="46" android:keyLabel="."  />
<Key android:codes="95" android:keyLabel="_"  />
<Key android:codes="-3" android:keyWidth="15.231%p" android:keyEdgeFlags="right" android:keyLabel="完成" />
</Row>
</Keyboard>


4、觸發鍵盤
EditText ed_ip = (EditText) view.findViewById(R.id.ed_ip);
    ed_ip.setInputType(InputType.TYPE_NULL);
    ed_ip.setOnFocusChangeListener(focus_listener);


private OnFocusChangeListener focus_listener = new OnFocusChangeListener() 
{
@Override
public void onFocusChange(View v, boolean hasFocus) 
{
if (hasFocus) 
{
setKeyboard(v); 
}
}
};
private void setKeyboard(View v)
{
    EditText edit1=(EditText)v;
   
   
    int inputback = edit1.getInputType();
   
   
edit1.setInputType(InputType.TYPE_NULL);
new KeyboardUtil(null,view, context, edit1).showKeyboard(); //此處調用自定義的鍵盤
edit1.setInputType(inputback);


if(edit1.length()>0)
    {
    edit1.setSelection(edit1.length()); //光標位置
    }

}

5、 KeyboardUtil
public class KeyboardUtil {

public KeyboardUtil(Activity act,View view, Context ctx, EditText edit) {
@Override
public void onKey(int primaryCode, int[] keyCodes) {
//處理自己的鍵盤事件
}
}
}


發佈了30 篇原創文章 · 獲贊 21 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章