网站建设资讯

NEWS

网站建设资讯

Android弹出键盘,android弹出键盘底部有空白

android 双屏无法弹出系统键盘

原因是因为当界面初始化的时候可能EditText并没有初始化完成,就要求显示软键盘了。

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的乐山网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

在包含EditText外层布局上添加,抢在EditText获取焦点,即可。

正常情况下,只要写了EditText控件,当进入Activity时,是会直接显示软键盘的,但是如果我们的EditText是GONE或者INVISIBLE的话,当我们点击其他控件,然后让Edittext显示,并且弹出软键盘,那么这个时候就必须关注顺序的问题,必须必须先让EditText显示,在调用显示软键盘的代码才可以,如果先让软键盘弹出再让EditText显示,这个时候软键盘是弹不出来的。

Android EditText获取焦点并弹出软键盘

1、首先,在xml文件中通过让edittext获取焦点

EditText

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:padding="17dp"

    android:textColor="#333333"

    android:textColorHint="#999999"

    android:hint="请输入课件描述..."

    android:gravity="top|left"

    android:background="@null"

   

    requestFocus/

/EditText

2、在清单文件中给activity添加android:windowSoftInputMode=”stateVisible”属性,这样一进入这个页面的时候光标就自动显示,软键盘也显示出来

activity

        android:name=".wonderfulmoment.AddCourseWareDescriptionActivity"

        android:windowSoftInputMode="stateVisible"/activity

Android 点击输入框弹出键盘,布局随键盘往上移动

一、效果图:

二、Code:

/**

*  1、获取main在窗体的可视区域

*  2、获取main在窗体的不可视区域高度

*  3、判断不可视区域高度,之前根据经验值,在有些手机上有点不大准,现改成屏幕整体高度的1/3

*      1、大于屏幕整体高度的1/3:键盘显示  获取Scroll的窗体坐标

*                          算出main需要滚动的高度,使scroll显示。

*      2、小于屏幕整体高度的1/3:键盘隐藏

*

* @param main 根布局 

* @param scroll 需要显示的最下方View

*/

public static void addLayoutListener(final View main, final View scroll) {

main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

    @Override

    public void onGlobalLayout() {

        Rect rect = new Rect();

        main.getWindowVisibleDisplayFrame(rect);

        int screenHeight = main.getRootView().getHeight();

        int mainInvisibleHeight = main.getRootView().getHeight() - rect.bottom;

        if (mainInvisibleHeight screenHeight / 4) {

            int[] location = new int[2];

            scroll.getLocationInWindow(location);

            int srollHeight = (location[1] + scroll.getHeight()) - rect.bottom;

            main.scrollTo(0, srollHeight);

        } else {

            main.scrollTo(0, 0);

}

}

});

}

三、调用方式:

在Activity的onCreate()中调用,

仅此记录。

如何实现android EditText允许输入字母和数字,同时默认弹出数字键盘?

这个问题看似简单,不过由于Android输入法的开放性,许多输入法相关的参数设置是由第三方输入法来实现的,而第三方输入法众多、实现不一,导致这个问题变得很复杂。

结论是,目前来看,并没有直接的方法,可以对所有输入法实现上述需求。

不过针对这个问题,我们有以下几种处理方案:

设置android:digits属性,允许输入数字和字母。

设置android:inputType为"number",将键盘切换为数字键盘。

这里的关键是,虽然单独设置android:inputType="number"时,只允许输入数字;但同时设置android:inputType和android:digits时,允许输入的字符是以android:digits为准的。

当输入法本身的UI允许在数字键盘、字母键盘间切换时,该方案是有效的;但是一些输入法的数字键盘不能切换到字母键盘,该方案失效;特别是,Android5.0的原生输入法就是如此,数字键盘UI没有提供切换到其他键盘的按钮。

虽然该方案对一些输入法(尤其是英文输入法)无效,但是中文输入法基本都是有效的。如果APP仅在国内用的,这个方案够用了

方案一失效的主要原因是,输入法界面中没有提供切换键盘的按键,所以我们可以自己添上按键。

带来的问题是,自己添加按键,很难与输入法保持统一的UI风格;而当输入法本身有键盘切换按键时,这个方案是画蛇添足,既怪异又不美观。 所以这个方案在UI上有严重缺陷,并不实用。

效果图如下:

Activity如下:

activity_main.xml如下:

自定义键盘可以彻底解决问题,是最完美的方案;但是复杂度有点高。

默认弹出数字键盘真的有那么重要么?没有的话,干脆不要折腾了,StackOverflow上那么多人已经证明这个问题无完美解了。

android 如何让软键盘自动弹出

可以通过下面的代码来实现Android自动弹出软键盘:

edittext.requestFocus(); //edittext是一个EditText控件

Timer timer = new Timer(); //设置定时器

timer.schedule(new TimerTask() {

@Override

public void run() { //弹出软键盘的代码

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

imm.showSoftInput(edittext, InputMethodManager.RESULT_SHOWN);

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);

}

}, 300); //设置300毫秒的时长

说明:同样是在写Techo Lite时遇到的问题。希望程序可以自动弹出软键盘,可是尝试了各种办法都没有效果。问题的原因似乎是必须等待UI绘制完成后弹出软键盘的代码才会有效。于是就采用了上面的方法。需要注意的是,在此之前必须让edittext获取焦点,不然也是无效的。


新闻名称:Android弹出键盘,android弹出键盘底部有空白
分享链接:http://njwzjz.com/article/hoopss.html