android KeyboardView使用

android自定义键盘
1、layout布局
              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、自定义布局

android:horizontalGap="0.0px" android:verticalGap="0.0px"
xmlns:android="http://schemas.android.com/apk/res/android">
 
   














   










android:keyWidth="16.5%p" android:keyEdgeFlags="right" android:isRepeatable="true"
android:keyIcon="@drawable/sym_keyboard_delete" />

















    android:keyEdgeFlags="left" android:isModifier="true"
android:isSticky="true" android:keyIcon="@drawable/sym_keyboard_shift" />













   















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) {
//处理自己的键盘事件
}
}
}


你可能感兴趣的:(android应用)