Android 相關知識 EditText焦點相關問題

去除EditText自動獲得焦點


當帶有EditView的activity第一次進入時,第一個EditText框會自動獲得焦點,這個嚴重影響了用戶體驗,但是如何去掉呢? 

查閱了很多資料後,發現以下方法最簡單: 



在xml中,在EditText控件之前 

加入 


<LinearLayout 

android:id="@+id/linearLayout_focus" 

android:focusable="true" 

android:focusableInTouchMode="true" 

android:layout_width="0px" 

android:layout_height="0px"/> 



這是一個虛假的LinearLayout,不會顯示的,但是會搶走焦點 

EditText控件獲得焦點是背景如何修改:
EditText有一個background屬性(對應setBackgroundResource方法),可以修改EditText的背景顏色 
但是在獲得焦點的時候,想讓它的背景顏色和未獲得焦點時的不一樣,怎樣修改它的屬性呢。 
可以參考如下代碼: 

Java代碼 複製代碼 收藏代碼
  1. EditText editText = (EditText) findViewById(R.id.search_text);
  2. //給editText增加獲得焦點的響應
  3. editText.setOnFocusChangeListener(new OnFocusChangeListener(){
  4. @Override
  5. public void onFocusChange(View v, boolean hasFocus){
  6. if(hasFocus){
  7. //獲得焦點時,修改背景屬性
  8. //R.drawable.edit_text_bg_focus爲背景資源
  9. v.setBackgroundResource(R.drawable.edit_text_bg_focus);
  10. }
  11. else{
  12. v.setBackgroundResource(R.drawable.edit_text_bg_unfocus);
  13. }
  14. }
  15. });


這樣就可以修改editText在獲得焦點時的背景屬性了

EditTex默認不獲得焦點



一個佈局文件裏第一個EditText或默認獲得焦點,如果想讓默認不獲得,則:
可以在EditText前面放置一個看不到的LinearLayout,讓他率先獲取焦點:
<LinearLayout
        android:focusable="true" android:focusableInTouchMode="true"
        android:layout_width="0px" android:layout_height="0px"/>
或者,讓EditText之前的控件先獲得焦點,都行。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章