我正在尝试以edittext的形式从用户收集数据。用户将输入一个字符串并单击按钮以执行以下操作:
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;
}
如果用户点击手机键盘上的“enter”,它将插入换行符/回车符。我该如何解决这个问题,以便添加一个新行呢?我不介意使用回车作为一种方法来发出命令来改变编辑文本区域的焦点,但如果没有,那么根本不允许它被使用。
答案 0 :(得分:10)
您应该在EditText的XML标记中使用android:singleLine="true"
,如下所示:
<EditText
android:id="@+id/edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
/>
这将使enter按钮将焦点更改为UI中的下一个视图,而不是在EditText中插入新行。
答案 1 :(得分:2)
我会在评论中加入此内容,但我认为我的声誉仍然不足以添加评论。
由于android:singleLine =“true”现已弃用,另一个选项是使用android:inputType =“text”。 @ Tiago_Pasqualini的回答略有变化:
<EditText
android:id="@+id/edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="text"
/>
这也会使输入按钮更改焦点到UI中的下一个视图,并跳过在EditText中输入一个新行。