有没有办法让Multi-Line EditText出现并在Android 2.3上使用IME Action Label"Done"?
在Android 2.2中,这不是问题,输入按钮显示IME操作标签"完成"(android:imeActionLabel="actionDone"),并在单击时取消软输入.
配置EditText多线时,Android 2.3无法显示软输入键盘的"完成"操作.
我已经设法通过使用a来改变Soft Input输入按钮的行为KeyListener,但是enter按钮仍然看起来像一个回车键.
这是宣言 EditText
<EditText
android:id="@+id/Comment"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="0dp"
android:lines="3"
android:maxLines="3"
android:minLines="3"
android:maxLength="60"
android:scrollHorizontally="false"
android:hint="hint"
android:gravity="top|left"
android:textColor="#888"
android:textSize="14dp"
/>
<!-- android:inputType="text" will kill the multiline on 2.3! -->
<!-- android:imeOptions="actionDone" switches to a "t9" like soft input -->
Run Code Online (Sandbox Code Playgroud)
inputType在加载后在活动中设置内容视图时检查值,它显示为:
inputType = 0x20001
Run Code Online (Sandbox Code Playgroud)
这是:
TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_NORMALInputType.TYPE_TEXT_FLAG_MULTI_LINE我遇到了最新的Jelly Bean模拟器的行为问题.EditTexts我的应用程序中有几个.OnEditorActionListener当用户按下键盘上的ENTER键时,An 提供特殊处理.这一直到ICS,但现在在Jelly Bean上,侦听器回调方法onEditorAction()不再被调用.只插入一个新行EditText.
这可以通过这种方式复制:
EditText testEditText = new EditText(context);
testEditText.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d(TAG, "onEditorAction() called");
return false;
}
});
addView(testEditText);
Run Code Online (Sandbox Code Playgroud)
这是Jelly Bean中的一个错误吗?还是在模拟器中?或者有意改变了行为?
奇怪的是,其他人写道,该方法被调用,但带有意外的参数,在这里运行Jelly Bean的Nexus 7:onEditorAction()中的null keyevent和actionid = 0(Jelly Bean/Nexus 7)
android android-virtual-device android-edittext android-4.2-jelly-bean