导航:首页 > 操作系统 > android获取软键盘状态

android获取软键盘状态

发布时间:2022-09-02 17:41:50

android 有没有获取系统软键盘的高度的方法

没有直接获得的方法,貌似有种从根layout高度来减的方法间接获得,不过我没试过。

② 如何获取android的软键盘的显示状态

最近项目中有一个编辑框,下面是个ListView。在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击。这样的体验效果很不好。于是便想在滑动或单击item时判断键盘是否弹出,若弹出,则把它隐藏。
网上一搜,发现Android并没有直接提供软键盘的弹出与隐藏判断,一些解决方案诸如判断父控件的高度或者判断

12

if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN) 隐藏键盘;

的方法并没有用,于是便从官方文档着手。
发现InputMethodManager有一个方法isActive(View view):如果view是输入法的活动view,则返回true。也就是说,如果是由view触发弹出软键盘,则返回true。哇,那问题就好办了

12

if(isActive(edittext)) 隐藏键盘

接着让另一个view强制获取焦点,这样isActivite(ediitext)就为false.
这个方法比较简单,代码比较短,也很好理解,希望能够帮助有需要的人,也不枉费我调试几个小时的功夫。
附上代码:

12345678

InputMethodManager inputMethodManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);<br>private boolean hideKeyboard(){ if(inputMethodManager.isActive(searchEditText)){<br>//因为是在fragment下,所以用了getView()获取view,也可以用findViewById()来获取父控件 getView().requestFocus();//使其它view获取焦点.这里因为是在fragment下,所以便用了getView(),可以指定任意其它view inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); return true; } return false; }

ps:如果是手动弹出键盘,getActivity().getCurrentFocus()改成searchEditText.并且手动弹出的键盘isActivie()失效,可用标记来判断.

③ 如何监听android软键盘的隐藏和消失

原理:自定义布局的onSizeChanged()方法,在其中增加一个监听接口,当软键盘显示或隐藏使得布局尺寸发生改变,就能捕获到这个事件。

具体方法如下:
首先,在清单文件Manifest.xml中的对应的Activity标签内设置
android:windowSoftInputMode=”adjustResize”
作用是当软键盘显示或隐藏时,该Activity主窗口总是会被调整大小以便留出软键盘的空间。唯有这样才能保证布局触发onSizeChanged()方法。

然后,自定义一个布局,具体是RelativeLayout、LinearLayout或是其它的,根据实际情况而定,自定义的目的是在其onSizeChanged()方法中增加一个监听接口。这里给出一个自定义RelativeLayout布局代码:

public class CustomRelativeLayout extends RelativeLayout {

private OnSizeChangedListener listener;

public CustomRelativeLayout(Context context) {
super(context);
}

public CustomRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {

Log.d(TAG.CUSTOM_VIEW, “onSizeChanged”);
super.onSizeChanged(w, h, oldw, oldh);
if (listener != null) {
listener.onSizeChanged(w, h, oldw, oldh);
}
}

public void setOnSizeChangedListener(OnSizeChangedListener listener) {
this.listener = listener;
}

/** * Activity主窗口大小改变时的回调接口(本示例中,等价于软键盘显示隐藏时的回调接口) */
public interface OnSizeChangedListener {
public void onSizeChanged(int w, int h, int oldw, int oldh);
}
}

最后,在程序中使用此接口(xxx.setOnSizeChangedListener(…))即可实现监听键盘隐藏或显示事件。

④ 求教android判断软键盘是否显示

判断原理: 我们activity的顶级View是DecorView,获取到DecorView并取到他的高度:

java">privatebooleanisSoftShowing(){
//获取当前屏幕内容的高度
intscreenHeight=getWindow().getDecorView().getHeight();
//获取View可见区域的bottom
Rectrect=newRect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);

returnscreenHeight-rect.bottom!=0;
}

⑤ 如何在android中判断软键盘是否弹出或隐藏

Android中判断软键盘是否弹出或隐藏可以借助软键盘显示和隐藏时,对主窗口进行了重新布局这个特性来进行侦听。如果我们设置的模式为压缩模式,那么我们可以对布局的onSizeChanged函数进行跟踪,如果为平移模式,那么该函数可能不会被调用。
假设跟布局为线性布局,模式为压缩模式,我们写一个例子,当输入法弹出时隐藏某个view,输入法隐藏时显示某个view。

public class ResizeLayout extends LinearLayout{
private OnResizeListener mListener;
public interface OnResizeListener {
void OnResize(int w, int h, int oldw, int oldh);
}
public void setOnResizeListener(OnResizeListener l) {
mListener = l;
}
public ResizeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh);
if (mListener != null) {
mListener.OnResize(w, h, oldw, oldh);
}
}
}

⑥ android 怎么判断软键盘是否打开

android判断软键盘打开的方式,可以计算主界面高度来判定,当判断主界面的高度小于手机的高度,就可以判断软键盘打开了。

⑦ Android怎么弹出软键盘,和开启软键盘

1、//隐藏软键盘
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
2、//显示软键盘,控件ID可以是EditText,TextView
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控件ID, 0);

⑧ 如何在Android中判断软键盘是否弹出或隐藏

android判断软键盘是否弹出和隐藏,主要是通过InputMethodManager 这个类来监听,如下代码:


=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
privatebooleanhideKeyboard(){if(inputMethodManager.isActive(searchEditText)){
//因为是在fragment下,所以用了getView()获取view,也可以用findViewById()来获取父控件getView().requestFocus();//强制获取焦点,不然getActivity().getCurrentFocus().getWindowToken()会报错inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);inputMethodManager.restartInput(searchEditText);returntrue;}returnfalse;}
阅读全文

与android获取软键盘状态相关的资料

热点内容
算法战书籍 浏览:575
卸载网络服务器是什么意思 浏览:123
菜鸟app的收货地址在哪里 浏览:488
服务器配什么显卡 浏览:369
动态壁纸不动了是怎么回事安卓 浏览:412
申万宏源app哪里看总盈利 浏览:133
单片机测电感电容 浏览:165
android在子线程中更新ui 浏览:694
算法分析师面试有什么要求 浏览:994
容器算法大全图解 浏览:69
cad后置命令失效 浏览:692
杀手阻击存档文件夹是哪一个 浏览:212
禁书pdf 浏览:920
没用app语音智能提醒怎么设置 浏览:502
linuxwiki安装 浏览:680
隔墙算法 浏览:174
安卓手机为什么app不通知 浏览:550
申请云服务器购买费用 浏览:115
云服务器镜像下载到本地 浏览:4
电脑文件夹名有横杠 浏览:154