android軟鍵盤自動彈出
A. 如何禁止android軟鍵盤自動彈出
在開發Anroid的時候,當你打開一個界面的時候,屏幕的焦點會自動停留在第一個EditText中,Android的軟鍵盤默認會自動彈出,用戶第一眼連界面都沒有看清楚,軟鍵盤就彈出來了,這就影響到了用戶體驗,我們需要設置打開界面的時候,當EditText獲取焦點的時候,不彈出軟鍵盤,其實也很簡單,代碼如下://
默認軟鍵盤不彈出
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
在OnCreate()函數中,加上即可,OK,搞定。
B. android 怎麼讓軟鍵盤彈出不把標題欄擠上去
可以通過下面的代碼來實現Android自動彈出軟逗慧鍵盤: edittext.requestFocus(); //edittext是一個EditText控制項 Timer timer = new Timer(); //設置定時器 timer.schele(new TimerTask() { @Override public void run() { //彈出軟鍵盤的代碼 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(edittext, InputMethodManager.RESULT_SHOWN); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); } }, 300); //設置300毫秒的時長 說明:同樣是在寫Techo Lite時遇到的問題。希望程序可以自動彈出軟鍵盤,可是嘗試了各耐指備種辦法都沒有效果。問題的原因似乎是必須等待UI繪制完成後彈出昌毀軟鍵盤的代碼才會有效。於是就採用了上面的方法。需要注意的是,在此之前必須讓edittext獲取焦點,不然也是無效的。
C. 如何禁止android軟鍵盤自動彈出
用的是android自帶的輸入框組件漏胡的話,是會自動彈出軟鍵盤的. 如果是其他的激迅地方需要彈出軟鍵盤可以先在想要彈出的地方先獲取組件焦點,然後調用鍵返鉛攔盤就ok了.
D. Android EditText獲取焦點並彈出軟鍵盤
1、首先,在xml文件中通過讓edittext獲取焦點
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="17dp"
android:textColor="#333333"
android:textColorHint="#999999"
android:hint="請輸入課件描述..."
android:gravity="top|left"
android:background="@null"
>
<requestFocus/>
</EditText>
2、在清單文件中給activity添加android:windowSoftInputMode=」stateVisible」屬性,這樣一進入這個頁面的時候游標就自動顯示,軟鍵盤也顯示出來
<activity
android:name=".wonderfulmoment."
android:windowSoftInputMode="stateVisible"></activity>
E. 如何解決 Android 軟鍵盤彈出,會把原來的界
解決辦法:
在mainfest.xml中,在和導航欄相關的activity中加:
<activity
android:name=".filing.MainActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
/>
windowSoftInputMode 屬性解釋:
活動的主窗口如何與包含屏幕上的軟鍵盤窗口交互。這個屬性的設置將會影響兩件事情:
1.軟鍵盤的狀態——是否它是隱藏或顯示——當活動(Activity)成為用戶關注的焦點。
2.活動的主窗口調整——是否減少活動主窗口大小以便騰出空間放軟鍵盤或是否當活動窗口的部分被
軟鍵盤覆蓋時它的內容的當前焦點是可見的。
在這設置的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設置的值
它的設置必須是下面列表中的一個值,或一個」state…」值加一個」adjust…」值的組合。
各值的含義:
【A】stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分
F. 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
G. Android 軟鍵盤的彈出及關閉
一、彈出:
方法1(推薦,此種方式可以自動彈出,無需延遲):
方法2(此種方式需要延遲一段時間,等UI載入完畢之後方能生效。但這個載入時間因不同手機而無法統一。你的手機好點,可能100毫秒就載入完畢,我的手機差點,可能需要1000毫秒才能載入完成。因此無法保證一定能自動彈出軟鍵盤):
方法3(推薦。原理同上,只是不需要自己寫死延遲時間。因為不同手機UI載入完畢所需時間可能不一樣,這種方法比較保險,總是在UI載入完畢之後彈出,靈活性較好。而方法2延遲時間是寫死的700毫秒,有可能在一些性能比較差的手機,700毫秒內UI還無法載入完畢,因此無法自動彈出軟鍵盤。也有可能因為手機性能太好,100毫秒就載入完UI,而後面的600毫秒就算白等了,靈活性、可靠性及用戶體驗都很差):
二、關閉(如果是在Dialog中彈出的,則一定要在Dialog關閉前關閉軟鍵盤;如果是在Activity中彈出的,則一定要在finish之前關閉軟鍵盤):
方法1:
方法2(推薦):