当前位置: 首页 > 知识库问答 >
问题:

在EditText中输入开始新行的键,而不是提交文本(Android)

景元徽
2023-03-14

我正在创建一个简单的todolist应用程序,通过EditText视图添加新的todo项。所以当我按下回车键时,我试图让它将新项目提交到列表中。但出于某种原因,它只是进入了一个新的领域。我还注意到,当我通过eclipse通过AVD使用enter键时,它工作正常,但问题只在我通过Nexus 4运行它时才会出现。

下面是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.todo_main);

    //Create reference to the ListView in the main layout
    ListView myListView = (ListView)findViewById(R.id.myListView);

    //Create a reference to the EditText view in the main layout for adding new items
    final EditText editText = (EditText)findViewById(R.id.myEditText);

    //Create a an arraylist to hold all the todo items
    final ArrayList<String> todoList = new ArrayList<String>();

    //Create an ArrayAdaptor object to be able to bind ArrayLists to ListViews
    final ArrayAdapter<String> arrayAdaptor = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoList);
    myListView.setAdapter(arrayAdaptor);

    //Listens for certain keys to be pushed, particular the dpad center key or enter key
    editText.setOnKeyListener(new View.OnKeyListener() {    
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if(event.getAction() == KeyEvent.ACTION_DOWN)
            {
                if((keyCode == KeyEvent.KEYCODE_ENTER || keyCode == KeyEvent.KEYCODE_DPAD_CENTER))
                {
                    //add item in the EditText to the todo list 
                    todoList.add(0, editText.getText().toString());
                    //Update the view by notifying the ArrayAdapter of the data changes
                    arrayAdaptor.notifyDataSetChanged();
                    editText.setText("");
                    return true;
                }
                return false;
            }
            return false;
        }
    });
}

和XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ToDoListActivity">

<EditText
    android:id="@+id/myEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/addItemHint"
    android:imeOptions="actionDone"
/>

<ListView
    android:id="@+id/myListView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"  
/>

请注意,我在堆栈溢出上发现了类似的问题,但似乎没有一个能解决我的问题。我试过了!

共有3个答案

印嘉泽
2023-03-14

android: SingleLine="true"被deprated,使用

android:maxLines="1"
android:inputType="text" 
android:imeOptions="actionNext"
孔俊捷
2023-03-14
android:inputType="textMultiLine"

在edittext中添加此属性将解决问题

鲁淇
2023-03-14

将EditText小部件上的singleLine属性设置为true:

<EditText
    android:singleLine="true"
    android:id="@+id/myEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/addItemHint"
    android:imeOptions="actionDone"
/>
 类似资料:
  • 在上一节我们讲到了 TextView,它用来显示一段文本。这一节可以算作成是 TextView 的延续,因为从功能上 EditText 在 TextView 的基础之上多了一个输入的功能;从代码上 EditText 是继承自 TextView 的子类,所以我们可以大胆的理解为, EditText 是一种带有输入功能的高级 TextView。 1. EditText 的特性 在学习过 TextVie

  • 我想要功能 只需输入--EditText返回并提交文本 Shift+Enter--在EditText中新建行 在layout.xml中:

  • 我的布局中有一个编辑文本,我尝试过在我的编辑文本中放置提示或文本。 当我第一次触摸或点击edittext时,移动键盘弹出输入文本,这是预期的,但edittext中的文本或提示不会被删除。我必须点击2次编辑文本,然后第一次移动键盘弹出,第二次点击删除文本。 我希望在第一次点击本身的文本应该从edittext删除。 例如:假设EditText将初始文本作为用户名,那么当用户第一次单击EditText时

  • 问题内容: 我有一个多行文本,当我只是简单地使用sendKeys将整个文本放入表单时,该表单会在每个换行符时提交。 我试图用换行符用以下方式替换换行符: 这只是删除了换行符,而我在输出文本中看不到换行符。 同样在下面不起作用(它还在换行符处提交表格): 那么,如何在不提交表单的情况下使用sendkey中的换行符呢? 问题答案: 这不是硒问题,通常在文本字段中按Enter键即可提交表格。通常,您可以

  • 问题内容: 我需要在键入时替换EditText内的文本:示例:如果用户按下“ A”,它将被存储到缓冲区中,而在EditText上显示“ D”(看起来就像他按下“ D”)。现在,我可以读取按下的字符,但是在et中不能显示任何字符,以避免stackoverflow: 问题答案: 您可以根据需要更改它:

  • 当我在模拟器的 EditText 中输入文本时,屏幕不会向上移动,因此我看不到我正在输入的内容。 我想附加屏幕截图,但我还没有所需的声誉。 这只是以下代码的问题。 同时,它在同一应用程序的另一个屏幕上运行良好。 工作代码是- 我正在努力找出它为什么不起作用。请帮帮忙!