Android软键盘的一些控制资料

10 篇文章 0 订阅

网上搜索的一些资料:

 

"EditText + Button" 形成一个"输入+按键响应" 的案例在android编程中是最常见不过的了。
但还有一些细节需要注意:
在EditText输入后,点击Button进行请求,软键盘应该自行消失
在EditText输入后,不点击Button进行请求,而是直接点击软键盘上的"回车",那么也应该能够正常响应请求
针对问题1,可以在响应Button的onClick事件中,主动将软键盘隐藏,加入如下代码即可
[java]
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0); 
针对问题2,可以在EditText的api doc中找到答案
void android.widget.TextView.setOnEditorActionListener(OnEditorActionListener l)
Set a special listener to be called when an action is performed on the text view. This will be called when the enter key is pressed, or when an action supplied to the IME is selected by the user. Setting this means that the normal hard key event will not insert a newline into the text view, even if it is multi-line; holding down the ALT modifier will, however, allow the user to insert a newline character.
 
Parameters:
l
因此,只需要给EditText设置一个onEditorActionListener就好了,简单示例如下
[java]  www.2cto.com
// The action listener for the EditText widget, to listen for the return key 
private TextView.OnEditorActionListener mWriteListener = 
    new TextView.OnEditorActionListener() { 
    public boolean onEditorAction(TextView view, int actionId, KeyEvent event) { 
        // If the action is a key-up event on the return key, send the message 
        if (actionId == EditorInfo.IME_NULL && event.getAction() == KeyEvent.ACTION_UP) { 
            String message = view.getText().toString(); 
            sendMessage(message); 
        } 
        if(D) Log.i(TAG, "END onEditorAction"); 
        return true; 
    } 
}; 
备注一下:TextView.OnEditorActionListener接口方法onEditorAction方法的第二个参数actionId,其可能的值在EditorInfo的说明中能够找到。列举如下:

IME_ACTION_DONE
IME_ACTION_GO
IME_ACTION_NEXT
IME_ACTION_NONE
IME_ACTION_PREVIOUS
IME_ACTION_SEARCH
IME_ACTION_SEND
IME_ACTION_UNSPECIFIED 
以上摘自 火山哥的专栏
------------------------------------------
在activity启动时,可以暂时不让软键盘弹出来:
在AndroidManifest.xml设置<activity android:name=".activity"
android:windowSoftInputMode="stateHidden">
或者:
如果你要让你页面始终不弹出软键盘就
android:windowSoftInputMode="stateAlwaysHidden"
或者使用代码(待验证):
// 隐藏Activity刚进来焦点在EditText时的键盘显示
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

==========================================================================
完全屏蔽软键盘:
EditText.setInputType(InputType.TYPE_NULL);
===========================================
解决虚拟键盘遮挡输入框:
在android的开发中,将整个页面只使用LinearLayout编辑时,当点击输入框时,系统自带的虚拟键盘会遮挡住输入框 解决办法是在整个页面配置文件中,在LinearLayout布局外加入 < ScrollView xmlns:android = " http://schemas.android.com/apk/res/android " android:orientation = " vertical " android:layout_width = " fill_parent " android:layout_height = " fill_parent " android:background = " @drawable/backgroundshape " > 这样在系统自动调用虚拟键盘时,整个页面布局会发生变化,分为两个部分,一个是虚拟键盘显示的部分,一个是你自己的页面。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值