博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 软键盘相关问题集锦
阅读量:4122 次
发布时间:2019-05-25

本文共 3909 字,大约阅读时间需要 13 分钟。

一、布局被软键盘顶上去的解决办法

在Manifest.xml文件中,给出问题的Activity设置属性:

android:windowSoftInputMode=“adjustPan|stateHidden”

如:

二、EditText自动弹出软键盘和隐藏软键盘的方法

隐藏软键盘的5种方法

  1. 在Manifest.xml文件中相应的Activity下添加如下代码即可:

    android:windowSoftInputMode="stateHidden"
  2. 让EditText失去焦点,用EditText的clearFocus即可:

    edit.clearFocus();
  3. 强制隐藏Android输入法窗口

    InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);   imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);

    或者

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); (如果输入法在窗口上已经显示,则隐藏,反之则显示)
  4. EditText始终不弹出虚拟键盘

    edit.setInputType(InputType.TYPE_NULL);
  5. 隐藏软件盘,imm.hideSoftInputFromWindow的第一个参数传当前的EditText对象。亲测有效!

    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(etEditMsg.getWindowToken(),0);

显示软键盘的方法

有时,我们确实是想让EditText自动获得焦点并弹出软键盘,在设置了EditText自动获得焦点后,软件盘不会弹出。

方法一:

注意:此时是由于刚跳到一个新的界面,界面未加载完全而无法弹出软键盘。此时应该适当的延迟弹出软键盘,如500毫秒(保证界面的数据加载完成,如果500毫秒仍未弹出,则延长至1000毫秒)。
可以在EditText后面加上一段代码,实例代码如下:

Timer timer = new Timer();  timer.schedule(new TimerTask() {      public void run() {          InputMethodManager inputManager = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);          inputManager.showSoftInput(editText, 0);      }  }, 500);

方法二:给activity配置加入属性

android:windowSoftInputMode="adjustResize"

三、软键盘的按键设置

搜索键及按搜索执行操作

1.xml布局的EditText中加入以下代码

android:imeOptions="actionSearch"

2.在Activity中给EditText设置 setOnEditorActionListener 侦听

etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() {        @Override        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {            if (actionId == EditorInfo.IME_ACTION_SEARCH) {                // 当按了搜索之后关闭软键盘                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);                imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);                				//执行的代码                return true;            }            return false;        }    });

####3.完整例子

XML布局

MainActivity

package dao.junwen.com.test;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.KeyEvent;import android.view.inputmethod.EditorInfo;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity implements TextView.OnEditorActionListener {    private EditText mSearch;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mSearch = (EditText) findViewById(R.id.main_search);        initListener();    }    /**     * 初始化监听     */    private void initListener() {        mSearch.setOnEditorActionListener(this);    }    /**     * 监听     */    @Override    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {        if (actionId == EditorInfo.IME_ACTION_SEARCH) {            // 当按了搜索之后关闭软键盘            ((InputMethodManager) mSearch.getContext().getSystemService(                    Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(                    MainActivity.this.getCurrentFocus().getWindowToken(),                    InputMethodManager.HIDE_NOT_ALWAYS);            return true;        }        return false;    }}

设置其他效果

android:imeOptions指定了弹出键盘时右下角的按键的显示文字,未指定时默认为回车图标。

android:imeOptions="flagNoExtractUi" //使软键盘不全屏显示,只占用一部分屏幕同时,这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键android:imeOptions="actionNone" //输入框右侧不带任何提示android:imeOptions="actionGo" //右下角按键内容为'开始'android:imeOptions="actionSearch" //右下角按键为放大镜图片,搜索android:imeOptions="actionSend" //右下角按键内容为'发送'android:imeOptions="actionNext" //右下角按键内容为'下一步'android:imeOptions="actionDone" //右下角按键内容为'完成'

转载地址:http://kvvpi.baihongyu.com/

你可能感兴趣的文章
RedisTemplate的key默认序列化器问题
查看>>
序列化与自定义序列化
查看>>
ThreadLocal
查看>>
从Executor接口设计看设计模式之最少知识法则
查看>>
OKhttp之Call接口
查看>>
application/x-www-form-urlencoded、multipart/form-data、text/plain
查看>>
关于Content-Length
查看>>
WebRequest post读取源码
查看>>
使用TcpClient可避免HttpWebRequest的常见错误
查看>>
EntityFramework 学习之一 —— 模型概述与环境搭建 .
查看>>
C# 发HTTP请求
查看>>
启动 LocalDB 和连接到 LocalDB
查看>>
Palindrome Number --回文整数
查看>>
Reverse Integer--反转整数
查看>>
Container With Most Water --装最多水的容器(重)
查看>>
Longest Common Prefix -最长公共前缀
查看>>
Letter Combinations of a Phone Number
查看>>
Single Number II --出现一次的数(重)
查看>>
Valid Parentheses --括号匹配
查看>>
Remove Element--原地移除重复元素
查看>>