Android EditText如何设置默认是不弹出软键盘需要点击是才跳出来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android EditText如何设置默认是不弹出软键盘需要点击是才跳出来相关的知识,希望对你有一定的参考价值。

EditText是在获得焦点时弹出软键盘,你可以在初始化activity的时候把焦点放在其他控件上,获得焦点可以在xml里面配置 android:getFocus="true";拼写可能不对,大意差不错,手上没有IDE追问

放button可以吗 因为我的xml布局四个是EditText 一个button 还有只要在想放的控件加上android:getFocus="true";就可以吗

追答

android编程时,当打开一个activity时,经常会因为内部存在editText类的组件,自动出现软键盘,影响视觉效果。
如果屏蔽软键盘,代码会比较繁杂,下面是列举了一个简单的方法。
我们可以这样来处理视图,将editText的焦点换成别的组件,像TextView,Button等等,这样就不会出现软键盘了。
先了解两句代码:
View.setFocusable(true),对应xml : android:focusable="true".
View.setFocusableInTouchMode(true),对应xml : android:focusableInTouchMode="true".
两者的意思是让组件可以获得焦点。不过有些区别,前者执行false条件后,在执行true,还是不能获取焦点。后者执行上述过程,还是能获取焦点。
当你加入上述代码后,在创建activity时,调用对应view的requestFocus(),这样就可以获得焦点了。当editText失去焦点了,也就不会有软键盘了

---------------------从别人那里抄过来的,应该可以满足你的需求.我记得在xml里面也可以配置android:requestFocus="true",可是刚试了下发现没这个属性,代码里面调用view.requestFocus()可以。

参考技术A 解决办法应该是在android manifest中对应的Activity中添加android:windowSoftInputMode="adjustPan"就行了

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>

来自:http://blog.csdn.net/a19860903/article/details/8546329   灰常感谢这位同学。。。

 

还有一个方法也可以非常简单的实现这个功能:

EditText对象的clearFocus();

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(editMsgView.getWindowToken(), 0);(关闭软键盘。。。)

































以上是关于Android EditText如何设置默认是不弹出软键盘需要点击是才跳出来的主要内容,如果未能解决你的问题,请参考以下文章

Android中EditTex焦点设置和弹不弹出输入法的问题

我想让edittext不弹出输入法该怎么做

android开发中,EditText点击事件可以响应,就是不弹出软键盘。怎么解决,EditText是在Dialog中使用的

android中怎样设置一个EditText里的默认值是1

android:自定义可输入对话框,EditText已经获得焦点,为啥就是不弹出输入法呢?

如何在 Holo 主题 Api 11-17 Android 中以编程方式将 EditText 背景设置为默认值