在activity中放置了1個或1個以上的EditText,進入該activity的時候第一個EditText會接收焦點,我希望里面所有的EditText默認是不接收焦點的,該怎么做呢?
方法:
在第一個EditText前面添加一個LinearLayout,並且一定要請求獲得焦點,否則無效。網上很多都說到要添加一個LinearLayout,但是沒有強調要使用
<requestFocus />這句,發現不使用這句其實是沒有效果的。
<LinearLayout android:focusable="true" android:focusableInTouchMode="true" android:layout_width="0px" android:layout_height="0px"> <requestFocus /> </LinearLayout>
然后,所有的EditText,里面都不要再使用<requestFocus />。
也有人說,初始化后,調用
EditText的clearFocus(),即:
EditText textIn = (EditText)findViewById(R.id.TextInput);
textIn.clearFocus();
textIn.setSelected(false);
試過,但沒有效果。
Android 如何讓EditText不自動獲取焦點
在項目中,一進入一個頁面, EditText默認就會自動獲取焦點。
那么如何取消這個默認行為呢?
在網上找了好久,有點 監聽軟鍵盤事件,有點 調用 clearFouse()方法,但是測試了都沒有! xml中也找不到相應的屬性可以關閉這個默認行為
解決之道:在EditText的父級控件中找一個,設置成
android:focusable="true" android:focusableInTouchMode="true"
這樣,就把EditText默認的行為截斷了!
<LinearLayout style="@style/FillWrapWidgetStyle" android:orientation="vertical" android:background="@color/black" android:gravity="center_horizontal" android:focusable="true" android:focusableInTouchMode="true" > <ImageView android:id="@+id/logo" style="@style/WrapContentWidgetStyle" android:background="@drawable/dream_dictionary_logo" /> <RelativeLayout style="@style/FillWrapWidgetStyle" android:background="@drawable/searchbar_bg" android:gravity="center_vertical" > <EditText android:id="@+id/searchEditText" style="@style/WrapContentWidgetStyle" android:background="@null" android:hint="Search" android:layout_marginLeft="40dp" android:singleLine="true" /> </RelativeLayout> </LinearLayout>