解决imeOptions=“actionDone”无效问题
程序员文章站
2022-05-30 23:42:30
...
先看效果图
对于这个问题整的挺难受的,国内很多网上的解决办法,感觉真的不靠谱,最后看到一个帖子,是老外写的,解决了。一句话:复写Edittext;
不多说,上代码:
package com.app.test.testedittextproject;
import android.content.Context;
import android.util.AttributeSet;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
import android.widget.EditText;
/**
* Created by liumengqiang on 17/6/7.
*/
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 defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
InputConnection connection = super.onCreateInputConnection(outAttrs);
int imeActions = outAttrs.imeOptions&EditorInfo.IME_MASK_ACTION;
if ((imeActions&EditorInfo.IME_ACTION_DONE) != 0) {
// clear the existing action
outAttrs.imeOptions ^= imeActions;
// set the DONE action
outAttrs.imeOptions |= EditorInfo.IME_ACTION_DONE;
}
if ((outAttrs.imeOptions&EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) {
outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
}
return connection;
}
}
然后在XML 的EditText中添加 imeOptions=“actionDone”;
<com.app.test.testedittextproject.ActionEditText
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Hello World!"
android:background="@color/colorPrimary"
android:imeOptions="actionDone"
android:layout_marginTop="50dp"/>
OK了!!!
推荐阅读
-
解决Alamofire库在iOS7下设置Head无效的问题
-
快速解决vue动态绑定多个class的官方实例语法无效的问题
-
解决vue.js this.$router.push无效的问题
-
快速解决vue-cli在ie9+中无效的问题
-
解决Intellij IDEA 使用Spring-boot-devTools无效的问题
-
解决angularJS中input标签的ng-change事件无效问题
-
SqlServer提示“列前缀tempdb.无效: 未指定表名”问题解决方案
-
Android闹钟启动时间设置无效问题的解决方法
-
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
-
解决python replace函数替换无效问题