如果屏蔽軟鍵盤,代碼會比較繁雜,下面是列舉了一個簡單的方法。
我們可以這樣來處理視圖,將editText的焦點換成別的組件,像TextView,Button等等,這樣就不會出現軟鍵盤了。
一,下面這樣做,需要點擊按鈕兩次,才響應操作
View.setFocusable(true), 對應xml : android:focusable="true".
View.setFocusableInTouchMode(true),對應xml :android:focusableInTouchMode="true".
兩者的意思是讓組件可以獲得焦點。不過有些區別,前者執行false條件後,在執行true,還是不能獲取焦點。後者執行上述過程,還是能獲取焦點。
當你加入上述代碼後,在創建activity時,調用對應view的requestFocus(),這樣就可以獲得焦點了。當editText失去焦點了,也就不會有軟鍵盤了
二,找到真正的解決方法了
activity“阻止自動彈出軟鍵盤”的方法 -尤其是對於Tab頁下的!
activity 第一個獲取焦點的組件是 EditText 時,開啓這個activity 時就會自動彈出軟鍵盤。
今天設計的程序不想要自動彈出,於是照了相關資料,但是嘗試了半天都不好使,讓本人很鬱悶,
最後的最後,終於找到了根源所在:
我的activity是Tab頁簽下的~!
所以應把代碼加在繼承於TabActivity的那個activity中!!而不是由點擊Tab頁啓動的那個activity~
<activity android:name=".MyTabActivity" android:label="@string/app_name"
android:windowSoftInputMode="stateHidden" />
這樣就成功了~!
—————————————————————————————————————————————————
時隔半年,又遇到Tab頁中有的Activity需要彈出鍵盤,有的Activity需要隱藏掉的情況,
這次用的是在Activity中加代碼的方法,先看下代碼在結束原因吧!
public class xxxActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.input_camera_activity);
}
@Override
protected void onResume() {
super.onResume();
HideKeyboard();//隱藏鍵盤
}
//隱藏鍵盤
private void HideKeyboard() {
new Timer().schedule(new TimerTask()
{
@Override
public void run() {
InputMethodManager manager = ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE));
manager.hideSoftInputFromWindow(
InputCameraActivity.this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS
);
}
}, 10);
}
}
這個xxxActivity 是Tab頁中的一個Activity,它想要隱藏掉軟鍵盤,
1.開啓線程延時的原因是:如果在Create方法中就直接關閉軟鍵盤會報錯,意思是Activity窗口沒有初始化完,不可以進行諸如此類的操作。於是延時一小會兒,再執行隱藏軟鍵盤的代碼,就可以了。注意,即使不是在Tab相關的Activity中,也是這樣!!
2.寫在Resume()中的原因是,Tab頁切換時不是從Activity的OnCreate()方法重新執行,所以爲保證每次切換到該Activity時都能隱藏掉軟鍵盤,所以要在OnResume()中寫。
————————————————————————————————————————
一般情況下(不是Tab的)據說有以下幾種方法:
[轉自]http://www.cnblogs.com/brainy/archive/2012/05/24/2516923.html
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);
3、不自動彈出鍵盤:
帶有EditText控件的在第一次顯示的時候會自動獲得focus,並彈出鍵盤,如果不想自動彈出鍵盤,有兩種方法:
方法一:在mainfest文件中把對應的activity設置
android:windowSoftInputMode="stateHidden" 或者android:windowSoftInputMode="stateUnchanged"。
方法二:可以在佈局中放一個隱藏的TextView,然後在onCreate的時候requsetFocus。
注意TextView不要設置Visiable=gone,否則會失效
,可以在佈局中放一個隱藏的TextView,然後在onCreate的時候requsetFocus。
注意TextView不要設置Visiable=gone,否則會失效
<TextView
android:id="@+id/text_notuse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
/>
TextView textView = (TextView)findViewById(R.id.text_notuse);
textView.requestFocus();
http://blog.sina.com.cn/s/blog_6dc41baf01015wqy.html