zoukankan      html  css  js  c++  java
  • 如何让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位于第一位,那么就应该在它前面定义一个隐藏的控件,让后将焦点放到这个隐藏的控件上面。

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



  • 相关阅读:
    hdu 6440 Dream(费马小定理+构造)
    [POJ3107]Godfather
    [POJ2488]A Knight's Journey
    [POJ3009]Curling 2.0
    [BZOJ1040][CODEVS1423][ZJOI2008]骑士
    [BZOJ1103] [POI2007]大都市meg
    BZOJ1827 [Usaco2010 Mar]gather 奶牛大集会
    [codevs1286]郁闷的出纳员
    [codevs3044]矩形面积求并
    BZOJ4563[Haoi2016]放棋子
  • 原文地址:https://www.cnblogs.com/smilefortoday/p/4021506.html
Copyright © 2011-2022 走看看