android 自定义输入法布局,Android继承View自定义控件调用输入法

希望从一个View上调用输入法和接收输入法传过来的字符串,可以通过调用EditText这个widget。但是,如果要做出很炫很个性的输入法,就必须自己去和EditText一样连接输入法,介绍如下:

首先,定义一个继承自BaseInputConnection的类。输入法是通过commitText来提交选中字符。

public class MyBaseInputConnection extends BaseInputConnection{

public MyBaseInputConnection(View targetView, boolean fullEditor) {

super(targetView, fullEditor);

}

public static String tx="";

//输入法程序就是通过调用这个方法把最终结果输出来的

@Override

public boolean commitText(CharSequence text, int newCursorPosition) {

tx = text.toString();

return true;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

publicclassMyBaseInputConnectionextendsBaseInputConnection{

publicMyBaseInputConnection(ViewtargetView,booleanfullEditor){

super(targetView,fullEditor);

}

publicstaticStringtx="";

//输入法程序就是通过调用这个方法把最终结果输出来的

@Override

publicbooleancommitText(CharSequencetext,intnewCursorPosition){

tx=text.toString();

returntrue;

}

}

BaseInputConnection相当于一个InputMethodService和View之间的一个通道。每当 InputMethodService产生一个结果时,都会调用BaseInputConnection的commitText方法,把结果传递出来。

之后,采用如下方式,呼出输入法,并且把自定义的BaseInputConnection通道传递给InputMethodService。

public class MyView extends XXView ...{

//得到InputMethodManager

InputMethodManager input = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);

//在你想呼出输入法的时候,调用这一句

input.toggleSoftInput(0, 0);

@Override

//这个方法继承自View。把自定义的BaseInputConnection通道传递给InputMethodService

public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

return new MyBaseInputConnection(this, false);

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

publicclassMyViewextendsXXView...{

//得到InputMethodManager

InputMethodManagerinput=(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);

//在你想呼出输入法的时候,调用这一句

input.toggleSoftInput(0,0);

@Override

//这个方法继承自View。把自定义的BaseInputConnection通道传递给InputMethodService

publicInputConnectiononCreateInputConnection(EditorInfooutAttrs){

returnnewMyBaseInputConnection(this,false);

}

}

低级界面上面,自己调用输入法并接收输入法的输出结果,就是这样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值