Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式控制EditText中的光标和文本_Java_Android_Android Edittext - Fatal编程技术网

Java 以编程方式控制EditText中的光标和文本

Java 以编程方式控制EditText中的光标和文本,java,android,android-edittext,Java,Android,Android Edittext,我有一个编辑文本框,我想在其中控制光标并以编程方式修改文本 我在GridView中使用12个按钮制作了12个按钮的键盘。每次按下按钮,我都会在编辑文本框中光标位置插入一个特定的文本。为此,我需要光标位置,以便可以在EditText视图中插入自定义文本 我有两个按钮,用于将光标位置向左/向右移动一个字符。或者,也可以通过触摸EditText视图来设置光标(就像EditText的行为一样) 此外,每当光标位置发生变化时,我希望看到光标在EditText中的当前位置(我想我必须实现某种接口,但我不知

我有一个编辑文本框,我想在其中控制光标并以编程方式修改文本

  • 我在GridView中使用12个按钮制作了12个按钮的键盘。每次按下按钮,我都会在编辑文本框中光标位置插入一个特定的文本。为此,我需要光标位置,以便可以在EditText视图中插入自定义文本
  • 我有两个按钮,用于将光标位置向左/向右移动一个字符。或者,也可以通过触摸EditText视图来设置光标(就像EditText的行为一样)
  • 此外,每当光标位置发生变化时,我希望看到光标在EditText中的当前位置(我想我必须实现某种接口,但我不知道如何实现)
到目前为止我都试过了

  • 我正在将按键存储在
    ArrayList
  • 每次按键时,我都会设置
    edittext.setText(字符串)
  • 可以通过
    getText()
    获取可编辑文本,但
    setText()
    仅接受字符串
因此,我感到困惑。我应该做些什么来满足我的所有要求。
PS:我是Android初学者,正在制作我的第二个应用程序(如果有帮助的话,这是一个科学计算器)

另外,如果有人自愿查看我的代码,我将非常感激他

在EditText使用包装器类中设置任何数字,然后使用toString()在EditText上设置它


对于设置位置,可以使用editText.setSelection(位置)

要在EditText中设置任何数字,请使用包装器类,然后使用toString()在EditText上设置它


对于设置位置,可以使用editText.setSelection(位置)

我不知道您为什么需要文本视图的光标位置,但请看下面的问题:

实际上,您可以通过获取输入在代码的textview中编辑文本,或者如果您希望,您可以实现TextWatcher界面,以了解用户在textview中键入的每个输入,如下所示:

 private class CheckText implements TextWatcher {
    @Override
        public void afterTextChanged(Editable s) {
                  //triggers after the user changed the input on text
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
                      //triggers before the user changed the input on text
        }
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
                   //triggers when the user changed the input on text
        }
    }

我不知道您为什么需要文本视图的光标位置,但请看下面的问题:

实际上,您可以通过获取输入在代码的textview中编辑文本,或者如果您希望,您可以实现TextWatcher界面,以了解用户在textview中键入的每个输入,如下所示:

 private class CheckText implements TextWatcher {
    @Override
        public void afterTextChanged(Editable s) {
                  //triggers after the user changed the input on text
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
                      //triggers before the user changed the input on text
        }
        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
                   //triggers when the user changed the input on text
        }
    }

我就是这样做的

  • 数组中所有按钮的存储id,如下所示

    int[] kbdButtons = { R.id.button1, R.id.button2, R.id.button3,
            R.id.button4, R.id.button5, R.id.button6, R.id.button7,
            R.id.button8, R.id.button9, R.id.button10, R.id.button11,
            R.id.button12, R.id.button13, R.id.button14, R.id.button15}
    
    2.然后将自定义Onclicklistner添加到kbdButtons数组中的所有按钮

     for (int i = 0; i < kbdButtons.length; i++) {
            Button buttonNum = (Button) dialoglayout
                    .findViewById(kbdButtons[i]);
            buttonNum.setOnClickListener(hindiKbdBtnsClick);
        }
    
  • 说明-hkEditText是我的editText视图,即

    EditText hkEditText = (EditText)FindViewById(R.id.myEdittextId);
    
    -看,我只是在当时按下的按钮上添加了文字。
    -您还可以看到一些特殊按钮的功能,如空格、shift和enter,我就是这样做的

  • 数组中所有按钮的存储id,如下所示

    int[] kbdButtons = { R.id.button1, R.id.button2, R.id.button3,
            R.id.button4, R.id.button5, R.id.button6, R.id.button7,
            R.id.button8, R.id.button9, R.id.button10, R.id.button11,
            R.id.button12, R.id.button13, R.id.button14, R.id.button15}
    
    2.然后将自定义Onclicklistner添加到kbdButtons数组中的所有按钮

     for (int i = 0; i < kbdButtons.length; i++) {
            Button buttonNum = (Button) dialoglayout
                    .findViewById(kbdButtons[i]);
            buttonNum.setOnClickListener(hindiKbdBtnsClick);
        }
    
  • 说明-hkEditText是我的editText视图,即

    EditText hkEditText = (EditText)FindViewById(R.id.myEdittextId);
    
    -看,我只是在当时按下的按钮上添加了文字。
    -您还可以看到一些特殊按钮的功能,如空格、shift和enter。这对我帮助不大
    getText().toString()
    这将只提供EditText字符串。这对我帮助不大!