Android EditText - 用按钮删除最后一个字母

时间:2014-03-10 18:15:23

标签: android android-edittext android-button

我必须将A和B写入编辑文本的按钮。如果edittext中有什么内容,我怎么能用" Del"删除最后一个字母?按钮? 我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
    android:id="@+id/buttonb"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/buttona"
    android:text="@string/buttonb"
    android:textSize="50sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/buttona"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:text="@string/buttona"
    android:textSize="50sp"
    android:textStyle="bold" />

<Button
    android:id="@+id/buttondel"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:text="@string/buttondel"
    android:textSize="50sp"
    android:textStyle="bold" />

<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:ems="58"
    android:textSize="20sp"
    android:textStyle="bold"
    android:inputType="text" >

    <requestFocus />
</EditText>

</RelativeLayout>

我的java:

package com.koostamas.keyboard;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;

public class MainActivity extends Activity implements OnClickListener {

Button buttona, buttonb;
EditText editText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);

addListenerOnButton();
}


   public void addListenerOnButton() {

buttona = (Button) findViewById(R.id.buttona);
buttona.setOnClickListener(this);
buttona.getText();
buttonb = (Button) findViewById(R.id.buttonb);
buttonb.setOnClickListener(this);
buttonb.getText();

   }

public void onClick(View v) {

    Button buttona = (Button)v;
    editText.setText(editText.getText().toString()+buttona.getText().toString());


}

public void onClick1(View v) {

    Button buttonb = (Button)v;
    editText.setText(editText.getText().toString()+buttonb.getText().toString());


}
}

所以我想成功。请帮我! 提前谢谢。

4 个答案:

答案 0 :(得分:7)

是的,你可以创建一个onClickListener,只需从编辑文本中获取文本并删除最后一个字符。

Button delete = (Button) findViewById(R.id.buttondel);
if( delete != null ) {
   delete.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick() {
         String textString = editText.getText().toString();
         if( textString.length() > 0 ) {
            editText.setText(textString.substring(0, textString.length() - 1 ));
            editText.setSelection(editText.getText().length());//position cursor at the end of the line
         }
      }
   });
}

编辑:在用户点击删除时,如果没有按下a或b,请不要忘记检查字符串长度是否大于0。

答案 1 :(得分:1)

设置新文本#1

CharSequence text = edittext.getText();
edittext.setText(text.subSequence(0, text.length() - 1));

设置新文本#2

CharSequence text = v.getText();
edittext.setText("");
edittext.append(text, 0, text.length() - 1);

删除可修改的

int length = editText.getText().length();
if (length > 0) {
    editText.getText().delete(length - 1, length);
}

可编辑序列

int length = editText.getText().length();
if (length > 0) {
    editText.getText().subSequence(0, length - 1);
}

通过调度删除键事件进行删除。

edittext.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL));

答案 2 :(得分:0)

String text = editText.getText().toString();
if(text.length() > 0){
  text = str.substring(0, str.length()-1);
   editText.setText(text);
}

答案 3 :(得分:0)

其他答案的一个限制是,如果光标不在最后位置,那么它也会删除在此答案中删除限制的最后一个字符 在您点击按钮

时写下来
int end = ((EditText)findViewById(R.id.one)).getSelectionEnd();
 if(end>0){
           SpannableStringBuilder selectedStr = new SpannableStringBuilder(((EditText) findViewById(R.id.one)).getText());
           selectedStr.replace(end - 1, end, "");
           ((EditText) findViewById(R.id.one)).setText(selectedStr);
           ((EditText) findViewById(R.id.one)).setSelection(end-1);
        }