как игнорировать / использовать возврат каретки в Android - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь собрать данные от пользователя в виде текста редактирования.Пользователь введет строку и нажмет кнопку, чтобы выполнить следующее действие:

public String encode(String s){
String result = "";
String element = "";

HashMap<String, String> translate = new HashMap<String, String>();

//initializing translate
translate.put("A",".-");
translate.put("B","-...");
translate.put("C","-.-.");
translate.put("D","-..");
translate.put("E",".");
translate.put("F","..-.");
translate.put("G","--.");
translate.put("H","....");
translate.put("I","..");
translate.put("J",".---");
translate.put("K","-.-");
translate.put("L",".-..");
translate.put("M","--");
translate.put("N","-.");
translate.put("O","---");
translate.put("P",".--.");
translate.put("Q","--.-");
translate.put("R",".-.");
translate.put("S","...");
translate.put("T","-");
translate.put("U","..-");
translate.put("V","...-");
translate.put("W",".--");
translate.put("X","-..-");
translate.put("Y","-.--");
translate.put("Z","--..");
translate.put("1",".----");
translate.put("2","..---");
translate.put("3","...--");
translate.put("4","....-");
translate.put("5",".....");
translate.put("6","-....");
translate.put("7","--...");
translate.put("8","---..");
translate.put("9","----.");
translate.put("0","-----");

    s = s.toUpperCase();
    for(int i=0; i < s.length();i++)
        {
        element = (String) translate.get(String.valueOf(s.charAt(i)));
        if(element == null)
            result += String.valueOf(s.charAt(i));
        else
            result += element;
        }
    return result;
}

Если пользователь нажмет «ввод» на клавиатуре телефона, он вставит перевод строки / возврата каретки.Как я могу решить эту проблему, чтобы добавить новую строку?Я не возражал бы использовать возврат каретки как способ выдачи команды для изменения фокуса вне области текста редактирования, но если это не так, то просто не позволяю использовать его вообще.

Ответы [ 2 ]

10 голосов
/ 24 февраля 2012

Вы должны использовать android:singleLine="true" в теге XML вашего EditText, например:

<EditText
    android:id="@+id/edittext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
/>

Это заставит кнопку ввода изменить фокус на следующий вид в вашем пользовательском интерфейсе, а не вставлять новую строку в ваш текст редактирования.

2 голосов
/ 24 ноября 2013

Я бы добавил это в комментарии, но я думаю, что моя репутация все еще недостаточно высока для добавления комментариев.

Поскольку android: singleLine = "true" теперь устарела, другой вариант - использовать android: inputType= "текст".Это небольшое изменение в ответе @ Tiago_Pasqualini:

<EditText
    android:id="@+id/edittext"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="text"
/>

Это также заставит кнопку ввода изменить фокус на следующий вид в пользовательском интерфейсе и пропустить ввод новой строки в EditText.

...