在Android中创建一个与软键盘具有相同行为的自定义键盘

时间:2011-03-01 03:49:41

标签: android android-widget

所以,今天我决定试用Android,所以请理解我是初学者。

我现在想要实现的是拥有一个EditText,以及一组用于将数据输入EditText的按钮。

我目前所做的是在XML布局中粘贴一组按钮小部件,并使用此代码使按钮在EditText中插入内容:

    final EditText inputline = (EditText) findViewById(R.id.textentry); 

    final Button my_button = (Button) findViewById(R.id.my_btn);
    my_button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            inputline.append("a");
        }
    }); 

这种作品,但我需要一些问题的帮助:

  • 它总是将字符附加在字符串的末尾,而不是在当前光标位置

  • 类似地,当我拨打inputline.selectAll()并按下我的按钮时,它会再次在字符串的末尾插入文本;而我希望它首先删除文本(因为它被选中),然后插入字符

  • 为每个按钮编写所有代码似乎很乏味。是否有更好的方法来完成这项工作?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我现在通过使用我的自定义函数inputline.append("a");替换lineInsert()等来解决这个问题,您可以在下面看到。

public void lineInsert(CharSequence text) {
    final EditText inputline = (EditText) findViewById(R.id.textentry);
    int start = inputline.getSelectionStart();
    int end = inputline.getSelectionEnd();
    inputline.getText().replace(Math.min(start,end), Math.max(start,end), text, 0, text.length());
    inputline.setSelection(inputline.getSelectionEnd());
} 

这与软键盘具有相同的行为。