❶ android如何监听软键盘输入法的删除键
参考下面代码:
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL
&& event.getAction() == KeyEvent.ACTION_DOWN) {
事件
return true;
}
return false;
}
});
❷ H5濡备綍瀵笕ndroid鍜宨os镓嬫満杞阌鐩樼殑鐩戝惉
镐荤粨锛
1.鍦╥os涓杞阌鐩桦脊璧锋椂锛屼粎浼氩紩璧穊ody镄剆crollTop鍊兼敼鍙桡纴浣嗘槸鎴戜滑鍙浠ラ氲繃杈揿叆妗嗙殑銮峰彇铹︾偣𨱍呭喌𨱒ュ仛鍒ゆ柇锛屽崟涔熷彧鑳藉湪ios涓閲囩敤杩欎釜鏂规堬纴锲犱负鍦╝ndroid涓瀛桦湪涓诲姩鍙楁皵阌鐩桦悗锛屼絾杈揿叆妗嗗苟娌℃湁澶卞幓铹︾偣锛岃宨os涓阌鐩桦弹姘斿悗灏变细澶卞幓铹︾偣锛
2.鍦╝ndrois涓杞阌鐩桦脊璧锋垨鏀惰捣镞讹纴浼氭敼鍙榳indow镄勯珮搴︼纴锲犳ょ洃钖瑆indow镄刼nresize浜嬩欢锛
涓銆丄ndroid
//銮峰彇铡熺獥鍙g殑楂桦害
var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight;
window.onresize=function(){
//阌鐩桦脊璧蜂笌闅愯棌閮戒细寮曡捣绐楀彛镄勯珮搴﹀彂鐢熷彉鍖
var resizeHeight=document.documentElement.clientHeight || document.body.clientHeight;
if(resizeHeight-0<originalHeight-0){
//褰撹蒋阌鐩桦脊璧凤纴鍦ㄦゅ勬搷浣
}else{
//褰撹蒋阌鐩樻敹璧凤纴鍦ㄦゅ勬搷浣
}
}
浜屻乮os
focusin鍜宖ocusout鏀鎸佸啋娉★纴瀵瑰簲focus鍜宐lur, 浣跨敤focusin鍜宖ocusout镄勫师锲犳槸focusin鍜宖ocusout鍙浠ュ啋娉★纴focus鍜宐lur涓崭细鍐掓场锛岃繖镙峰氨鍙浠ヤ娇鐢ㄤ簨浠朵唬鐞嗭纴澶勭悊澶氢釜杈揿叆妗嗗瓨鍦ㄧ殑𨱍呭喌銆
document.body.addEventListener('focusin', () => {
//杞阌鐩桦脊鍑虹殑浜嬩欢澶勭悊
if(isIphone()锛墈
}
})
document.body.addEventListener('focusout', () => {
//杞阌鐩樻敹璧风殑浜嬩欢澶勭悊
if(isIphone()锛墈
}
})
鐗规ゅ0鏄庢枃绔犲嚭澶勶细 https://blog.csdn.net/u012982629/article/details/81905894
❸ Android 手机软键盘的弹起和关闭的监听
在猜迟掘很多Android App 开发的过程中,需要对Activity 中 软键盘的弹起和关闭进项监听,但是Andoid中并没有提供相对应的api进行监听, 我有一个简单的方法。
首先需要知道穗核一些基础知识
在manifest文件中可以设置Activity的android:windowSoftInputMode属性,这个属性值常见的设置如下:android:windowSoftInputMode="stateAlwaysHidden|adjustPan"
那么这里值的含义列表如下:
1、stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
2、stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
3、stateHidden:用户选择activity时旦含,软键盘总是被隐藏
4、stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
5、stateVisible:软键盘通常是可见的
6、stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
7、adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
8、adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
9、adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
案例:
1.我们需要将监听所在的Activity在Manifest文件中的设置为如下形式:
<activity
android:name="com.zy.project.MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >
<intent-filter>
<action android:name="android.intent.action.MAIN/>
<category android:name="android.intent.category.LAUNCHER/>
</intent-filter>
</activity>
当有软键盘弹起时,Activity的布局大小会被滚动上去,但是你仍然可以通过滑动浏览所有。
2 需要在外层布局文件设置一个id,并在activity 中设置监听
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
import android.widget.Toast;
public class MainActivity extends Activity implements OnLayoutChangeListener{
//Activity最外层的Layout视图
private View rootView;
//屏幕高度
private int screenHeight = 0;
//软件盘弹起后所占高度阀值 一般是占用屏幕的1/3
private int keyHeight = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rootView = findViewById(R.id.root_layout);
//获取屏幕高度
screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
//阀值设置为屏幕高度的1/3
keyHeight = screenHeight/3;
}
@Override
protected void onResume() {
super.onResume();
//添加layout大小发生改变监听器
rootView.addOnLayoutChangeListener(this);
}
@Override
public void onLayoutChange(View v, int left, int top, int right,int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
//old是改变前的左上右下坐标点值,没有old的是改变后的左上右下坐标点值
// System.out.println(oldLeft + " " + oldTop +" " + oldRight + " " + oldBottom);
// System.out.println(left + " " + top +" " + right + " " + bottom);
//现在认为只要控件将Activity向上推的高度超过了1/3屏幕高,就认为软键盘弹起
if(oldBottom != 0 && bottom != 0 &&(oldBottom - bottom > keyHeight)){
Toast.makeText(MainActivity.this, "监听到软键盘弹起...", Toast.LENGTH_SHORT).show();
}else if(oldBottom != 0 && bottom != 0 &&(bottom - oldBottom > keyHeight)){
Toast.makeText(MainActivity.this, "监听到软件盘关闭...", Toast.LENGTH_SHORT).show();
}
}
本文来自:http://m.blog.csdn.net/bear_huangzhen/article/details/45896333