更新于20140110 现在最常用的解决方法是 在布局的获取焦点的元素前面加上这段
<LinearLayout
android:focusable="true" android:focusableInTouchMode="true"
android:layout_width="0px" android:layout_height="0px"/>
==============================================
一开始以为这个问题很好解决,没想到研究了半天,都没找到解决方法
问题:
I have an Android Activity, with two elements:
- EditText
- ListView
When my Activity starts, the EditText immediately has input focus (flashing cursor). I don't want any control to have input focus at startup.
解决方法:http://stackoverflow.com/questions/1555109/stop-edittext-from-gaining-focus-at-activity-startup
Exist more simple solution. Set in your parent layout next attributes:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainLayout"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" >
And now, when activity starts this layout getting default focus.
Also we can remove focus from children views in runtime (e.g. after finishing child editing):
findViewById(R.id.mainLayout).requestFocus();