在進入一個Activity時,如果這個Activity中有EditText,則這個EditText會自動擷取焦點,然後就會彈出軟鍵盤,這樣給使用者體驗不是很好。是以一般會通過代碼控制讓EditText不擷取焦點。常用的方式如下,在Activity的布局檔案中加上如下代碼:
<!-- 輸入焦點控制 -->
<LinearLayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
在日前開發的一個項目中界面中除了EditText就是Spinner 和Button等空間,EditText 擷取焦點以後,點選Spinner總是無法移除焦點:采取如下方式解決,
當點選Spinner時讓EditText失去焦點即可:(見标紅代碼)
// 初始化兩個LayoutInflater對象
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
et_name = (EditText) findViewById(R.id.et_name);
ib_add = (ImageButton) findViewById(R.id.ib_add);
ib_clear = (Button) findViewById(R.id.ib_clear);
ib_query = (Button) findViewById(R.id.ib_query);
ib_down = (Button) findViewById(R.id.ib_down);
ib_save = (Button) findViewById(R.id.ib_save);
ib_back = (ImageButton) findViewById(R.id.ib_back);
// ib_sex = (ImageButton) findViewById(R.id.ib_sex) ;
ib_add.setOnClickListener(this);
ib_clear.setOnClickListener(this);
ib_query.setOnClickListener(this);
ib_down.setOnClickListener(this);
ib_save.setOnClickListener(this);
ib_back.setOnClickListener(this);
// ib_sex.setOnClickListener(this) ;
// 性别
ArrayAdapter<String> sexAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
sexAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
String sexString;
sexAdapter.clear();
int position = 0;
for (int i = 0; i < sexList.length; i++) {
sexString = sexList[i];
sexAdapter.add(sexString);
}
sp_sex = (Spinner) findViewById(R.id.sp_sex);
sp_sex.setAdapter(sexAdapter);
sp_sex.setFocusable(true);
sp_sex.setSelection(position);
sp_sex.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
et_name.clearFocus();
return false;
}
});
sp_sex.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
et_name.clearFocus();
return false;
}
});
sp_month.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
et_name.clearFocus();
return false;
}
});
sp_customerlevel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView v1 = (TextView) view;
if (v1 != null)
v1.setTextColor(Color.BLACK); // 可以随意設定自己要的顔色值
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// 出生月份
ArrayAdapter<String> monthAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
monthAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
String monthString;
monthAdapter.clear();
position = 0;
for (int i = 0; i < monthList.length; i++) {
monthString = monthList[i];
monthAdapter.add(monthString);
}
sp_month = (Spinner) findViewById(R.id.sp_month);
sp_month.setAdapter(monthAdapter);
sp_month.setFocusable(true);
sp_month.setSelection(position);
sp_month.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView v1 = (TextView) view;
if (v1 != null)
v1.setTextColor(Color.BLACK); // 可以随意設定自己要的顔色值
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// 客戶等級
ArrayAdapter<String> customerlevelAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item);
customerlevelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
String customerlevelString;
customerlevelAdapter.clear();
position = 0;
for (int i = 0; i < customerlevelList.length; i++) {
customerlevelString = customerlevelList[i];
customerlevelAdapter.add(customerlevelString);
}
sp_customerlevel = (Spinner) findViewById(R.id.sp_customerlevel);
sp_customerlevel.setAdapter(customerlevelAdapter);
sp_customerlevel.setFocusable(true);
sp_customerlevel.setSelection(position);
sp_customerlevel.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView v1 = (TextView) view;
if (v1 != null)
v1.setTextColor(Color.BLACK); // 可以随意設定自己要的顔色值
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
// 查詢所有的客戶資料
mCurrentData.clear();
mCurrentData = CustomerDBManager.getInstance().queryCustomerAll();
mAdapter = new SessionLocalAdapter(mCurrentData, CustomerMainActivity.this);
mListView = getListView();
mListView.setAdapter(mAdapter);
mListView.setFooterDividersEnabled(false); // 設成flase時,此ListView将不會在頁腳視圖前畫分隔符。此屬性預設值為true。如果listview中沒有添加頁腳這個屬性就不起作用。
mListView.setHeaderDividersEnabled(false); // 設成flase時,此ListView将不會在頁眉視圖前畫分隔符。此屬性預設值為true。如果listview中沒有添加頁眉這個屬性就不起作用。
mListView.setOnItemClickListener(this);
mListView.setOnItemLongClickListener(this);