總結一下網上的辦法
可是一個都不管用
我想真的是應該我的虛拟機出問題了
神啊
讓我趕緊有錢買安卓手機吧。。
(那種很便宜的真心不想買。。。感覺。。不劃算。。OTZ
========================================================================原因分析:
Android新啟動Activity,dialog或者其他窗體中中包含EditText, 新啟動的activity的焦點預設在EditText上,這時候android系統會自動彈出軟鍵盤。這會導緻擠壓activity本來的界面,影響美觀。
幾種解決方法:
一、解決效果:activity打開,軟鍵盤不自動打開,焦點不在editText上面。當點選editText,再打開軟鍵盤
具體方法:在onCreate()方法中将焦點放在另一個view上. view使用requestFocus()焦點,但是如果讓button或者textView之類控件直接使用requestFocus()方法,則無法 擷取焦點,焦點會依然在editText上。
隻能在使用View的requestFocus()方法之前調用下面2個方法,view才可擷取焦點:
view.setFocusable(true);
view.setFocusableInTouchMode(true);
然後調用 requestFocus()即可擷取焦點。
二、解決效果:activity打開,軟鍵盤不自動打開,焦點落在editText上面。當點選editText,再打開軟鍵盤
具體方法:在Activity中OnCreate方法裡面加下面這句代碼 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
或者在AndroidManifest.xml中該activity處添加android:windowSoftInputMode屬性
eg. <activity android:name="SelectPartsActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden" />
PS:如果實在不放心,可以兩個都添加
三、解決效果:android機頂盒開發時,長按遙控器OK鍵(此處的長按操作一般都為使用者按鍵時間過長導緻的誤操作,而不是有意長按)打開Activity,軟鍵盤不自動打開,焦點落在editText上面。
解決方法(本人未測試,不知是否可用):在OnCreate中設定延時,必須等延時事件完畢才讓EditText能獲得焦點彈出軟鍵盤;或者讓EditText一直獲得焦點,必須延時事件結束後EditText才能響應軟鍵盤彈出事件。此處用到Timer輔助實作。
eg. @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
//此處EditText獲得焦點或者軟鍵盤彈出操作
...................
// InputMethodManager imm = (InputMethodManager)MainActivity.this.getSystemService(INPUT_METHOD_SERVICE);
// imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
}, 1000); //在一秒後操作
}
自動關閉:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0);
引用自 http://www.eoeandroid.com/blog-687425-4752.html
==================================================================
剛進入activity的時候,如果布局元件有edittext的話,往往edittext會擷取焦點,自動彈出軟鍵盤,影響整個界面的視覺效果。解決方法如下:
可以在edittext的父布局結構中(例如LinearLayout,RelativeLayout等)添加
view sourceprint?
android:focusable="true"
android:focusableInTouchMode="true"
或
<TextView
android:id="@+id/txtNotuse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:textIsSelectable="true" />