❶ 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