Вопрос по android, keyboard, settext – Android SetText меняет тип клавиатуры

2

Я разрабатываю приложение для Android, которое содержитEditText.

Я контролирую то, что написано в editText, вызывая

et.addTextChangedListener(new TextWatcher() {
    public void afterTextChanged(Editable s) {
        String message = et.getText().toString();
        if(s.toString().compareTo(before)!=0){
            et.setText(message);
            et.setSelection(et.getText().length());
        }
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        before = et.getText().toString();
        System.out.println("After");
    }

    public void onTextChanged(CharSequence s, int start, int before, int count) {
        System.out.println("ON");
    }
});

В функции afterTextChanged я используюet.setText("some Text"); проблема в том, что после изменения текста клавиатура также изменилась, например, еслиsymbol клавиатура была открыта, и я использовал setText, он автоматически изменится наqwerty.

Как я могу решить эту проблему?

Хотите использовать специальную клавиатуру? hasanghaforian
нет ... любая клавиатура Noha Nhe
проверьте редактирование. Я добавил больше кода Noha Nhe
Я думаюstackoverflow.com/a/26373852/845935 это лучшее решение. Работает для меня. sagus_helgy
Пожалуйста, добавьте больше кода. Я пробую это и получаю & quot; java.lang.StackOverflowError & quot; hasanghaforian

Ваш Ответ

1   ответ
2

Я не смог найти прямого решения вашей проблемы, но вы можете сделать некоторые вещи, которые решат вашу проблему! Используйте текстовое представление, которое находится на вашем тексте редактирования (например, вы можете использовать RelativeLayout, чтобы установить текстовое представление для текста редактирования), и установить белый цвет шрифта для редактирования текста (или цвет фона редактирования текста), чтобы пользователь не мог его видеть & apos; Настоящий текст. Надеюсь, этот фрагмент поможет вам:
main.xml(in res/layout):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activityRoot"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
     >

    <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="MyTextView" />

</RelativeLayout>     

Activity that you observe text changes:

public class TestproGuardActivity extends Activity {

    EditText et;
    TextView tv1;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv1 = (TextView)findViewById(R.id.textView1);
        et = (EditText)findViewById(R.id.editText1);

        et.addTextChangedListener(new TextWatcher() {
            private String before = "hasan";
            public void afterTextChanged(Editable s) {
               String message = et.getText().toString();
               if(s.toString().compareTo(before )!=0){
//               et.setText(message);
                   tv1.setText(message);
//               et.setSelection(et.getText().length());
               }
            }
            public void beforeTextChanged(CharSequence s, int start, int count, int after){

                before = et.getText().toString();

                System.out.println("After");   

            }
            public void onTextChanged(CharSequence s, int start, int before, int count)
            {
                System.out.println("ON");
            }
        });
    }


}

Похожие вопросы