2012-08-10 103 views
5

我想知道是否有任何方法可以从EditText中删除特定字符。我想通过在编辑文本中指定位置来删除EditText的章程 有没有类似removeAt()EditText如何从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; 
     } 
    }); 

的问题是,我得到双重性格的一个是正常的字符,然后再大胆的一个,所以我想通过指定有位置,除去正常的字符

+0

这可以帮助:http://stackoverflow.com/questions/7661104/insert-character-between-the-cursor-position-in-edit-text – 0gravity 2012-08-10 16:29:32

回答

7

你必须将其更改为字符串,首先是因为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);它会删除第一个字符。

我希望帮助:)

+0

看看这篇文章,如果我把我的编辑文本数据到字符串大胆的效果将会丢失,这就是为什么我不能把编辑文本数据转换为字符串http:// stackoverflow .com/questions/11905850/quetion-continue – maddygoround 2012-08-10 16:40:40

+0

@RathoreSunny这应该是个诀窍! – 2012-08-13 22:27:47

1

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

+0

HTTP:// stackoverflow.com/questions/11905850/quetion-continue – maddygoround 2012-08-10 16:39:12

0

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

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

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

最后,在EditText中设置被操纵的字符串temp。

ed1.setText(temp); 
2

我的实现如下。我希望这将是有益的

int cursorPosition = mDialerEditText.getSelectionStart(); 
    if (cursorPosition > 0) { 
      mDialerEditText.setText(mDialerEditText.getText().delete(cursorPosition - 1, cursorPosition)); 
     mDialerEditText.setSelection(cursorPosition-1); 
    }