7

我想知道有什么方法可以从EditText. EditText我想通过在编辑文本中指定位置来删除章程,是否有类似removeAt()for 的内容EditText

    public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button b1=(Button)findViewById(R.id.button1);
        final EditText ed1=(EditText)findViewById(R.id.editText1);
        b1.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                // TODO Auto-generated method stub

             //i want something like this
                    ed1.removeAt(5);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


}

额外的信息

主要问题是我想在edittext中使文本变为粗体,但不是所有文本。设置粗体按钮后输入的文本(粗体是我的切换按钮)。好的,这是代码

     ed1.setOnKeyListener(new OnKeyListener() {

        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            int i = 0;

            switch(event.getAction())
            {
            case KeyEvent.ACTION_UP:
                    if(bold.isChecked())
                    {
                         i=ed1.getSelectionStart();

                         ed1.append(Html.fromHtml("<b>"+ed1.getText().toString().charAt(i-1)+"</b>"));

                    }
                    return true;

            }
            return false;
        }
    });

问题是我得到双字符的一个是普通字符,然后是粗体,所以我想通过指定位置来删除那个普通字符

4

4 回答 4

12

您必须先将其更改为字符串,因为 getText 返回可编辑,例如:

int charIndex;
String text = ed1.getText().toString();
text = text.substring(0, charIndex) + text.substring(charIndex+1);
ed1.setText(text);

要删除一个字符并保持粗体字符相同:

ed1.setText((Spanned)ed1.getText().delete(indexStart , indexEnd));

这会将字符从索引“indexStart”删除到“indexEnd -1”。例如,如果您使用 delete(0,1); 它将删除第一个字符。

我希望这会有所帮助:)

于 2012-08-10T16:33:31.060 回答
4

我的实现如下。我希望它会有所帮助

int cursorPosition = mDialerEditText.getSelectionStart();
    if (cursorPosition > 0) {
          mDialerEditText.setText(mDialerEditText.getText().delete(cursorPosition - 1, cursorPosition));
        mDialerEditText.setSelection(cursorPosition-1);
    }
于 2016-02-09T09:58:37.603 回答
1

EditText就像任何其他的一样TextView,但它也可以被编辑。因此,您可以使用该getText()方法,将其存储为String,删除所需的字符,然后在 上调用setText(str)方法EditText来更改文本。

于 2012-08-10T16:23:05.263 回答
0

从 EditText 获取输入并存储在 String 中。

String temp = ed1.getText().toString();

现在操纵此字符串临时以删除所需位置的字符。(我建议你使用String.substring(..)函数来实现这一点。)

最后,在 EditText 中设置操作字符串 temp。

ed1.setText(temp);
于 2012-08-10T17:05:26.467 回答