我使用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"/>
答案 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