android:imeOptions =“actionSend”只能单独使用

时间:2016-07-25 05:21:16

标签: android android-edittext

我使用android:imeOptions="actionSend",因此我添加android:inputType="text",但EditText只显示一行。为什么呢?

我希望EditText显示多行,android:imeOptions="actionSend"可以使用。

<EditText
    android:id="@+id/reply_edit"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/comment_layout_bg"
    android:gravity="center_vertical"
    android:inputType="text"
    android:imeOptions="actionSend"
    android:maxLines="4"
    android:minHeight="36dp"
    android:textSize="16dp"/>

Screenshot

2 个答案:

答案 0 :(得分:0)

从Android文档中我发现了以下内容:

大多数软输入法在底角提供适合当前文本字段的用户操作按钮。默认情况下,系统使用此按钮进行Next或Done操作,除非您的文本字段允许多行文本(例如使用android:inputType =“textMultiLine”),在这种情况下,操作按钮是回车符。但是,您可以指定可能更适合您的文本字段的其他操作,例如Send或Go。

所以对于多线。而不是

android:inputType="text"

使用

android:inputType="textMultiLine" 

好的以上不是你的解决方案,但对于有限的线路(3)。你可以使用下面的代码

TextView tv = (TextView)findViewById(R.id.editText);
if (tv != null) {
    tv.setHorizontallyScrolling(false);
    tv.setLines(3);
}

你现在可以获得多线。

另一种解决方案是使用actionDone和MUlti-line的组合 如下

package com.gs;

import android.content.Context;
import android.util.AttributeSet;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.EditText;

public class ActionEditText extends EditText
{
   public ActionEditText(Context context)
   {
       super(context);
   }

   public ActionEditText(Context context, AttributeSet attrs)
   {
       super(context, attrs);
   }

   public ActionEditText(Context context, AttributeSet attrs, int defStyle)
   {
       super(context, attrs, defStyle);
   }

   @Override
   public InputConnection onCreateInputConnection(EditorInfo outAttrs)
   {
       InputConnection conn = super.onCreateInputConnection(outAttrs);
       outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
       return conn;
   }
}

<com.gs.ActionEditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:imeOptions="actionDone"
    android:inputType="textAutoCorrect|textCapSentences|textMultiLine" />

答案 1 :(得分:0)

您可以扩展EditText并构建自己的EditText并覆盖onCreateInputConnection方法,为action_send执行scenarion。但是用户可以输入四行全文而不需要换行。

请参阅此link