首页 > 代码库 > 如何让EditText不能自动获取焦点(转)

如何让EditText不能自动获取焦点(转)

转载地址:http://blog.csdn.net/subaohao/article/details/9043895

在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> 

 


原作者的试过的这些方法我还没有经过实践,但是我觉得无论什么方法,本质都应该是:

 转移EditText的焦点,将焦点放到别的控件上面。假如EditText位于第一位,那么就应该在它前面定义一个隐藏的控件,让后将焦点放到这个隐藏的控件上面。

 以后有时间我会将方法都测试一下,验证我的想法对不对!!

 

 

 

 

 



如何让EditText不能自动获取焦点(转)