android安卓屏蔽禁用系统输入法,自定义软键盘,解决EditText光标问题demo

目前很多的输入法都有自动提示补全功能,在一些应用场景里不适用,需要禁用系统输入法,自定义软键盘,EditText的光标问题是比较头疼的,网上的说法很多,然而大部分都是解决不了问题的。以下是本人做的一个demo供网友参考。

直接上代码:

xml软键盘:

        <android.inputmethodservice.KeyboardView
            android:id="@+id/keyboard_view"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:keyBackground="@drawable/btn_keyboard_key"
            android:keyTextColor="@color/black"
            android:visibility="gone" />

禁用系统输入法,解决EditText光标问题的重要代码:

public boolean onTouch(View v, MotionEvent event)
	{
		//隐藏输入法,显示光标
		EditText et=(EditText)v;
		int inType = et.getInputType(); // back up the input type
		if (sdkInt>=11) {
			Class<EditText> cls=EditText.class;
			try {
				Method setShowSoftInputOnFocus=cls.getMethod("setShowSoftInputOnFocus", boolean.class);
				setShowSoftInputOnFocus.setAccessible(false);
				setShowSoftInputOnFocus.invoke(et, false);
			} catch (NoSuchMethodException e) {
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				e.printStackTrace();
			}
		}else {
			et.setInputType(android.text.InputType.TYPE_NULL); // disable soft input
			et.setInputType(inType);

		}
		keyboardUtil=null;
		keyboardUtil = new KeyboardUtil(act, ctx, et);
		et.onTouchEvent(event);// call native handler
		// restore input type
		keyboardUtil.showKeyboard();

		return true;
	}

其他代码就不贴了,需要完整demo的请自行下载。

时间: 2024-10-19 06:05:32

android安卓屏蔽禁用系统输入法,自定义软键盘,解决EditText光标问题demo的相关文章

android系统中,点击EditText时,隐藏系统软键盘,显示光标

因为项目中要用自定义的随机键盘,所以必须得屏蔽系统软键盘,但是在4.0的测试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,但是光标也会隐藏,所以无法使用. 3.0以下版本可以用editText.setInputType(InputType.TYPE_NULL)来实现.或者设置editText.setKeyListener(null)来实现.3.0以上版本除了调用隐藏方法setShowSoftInputOnFocus(fals

Android自定义软键盘

前不久由于项目的需要,要做一个自定义的软键盘,我也上网看了很多,都觉得很繁琐,所以想自己动手实现个.以备不时之需把.我选择了参考百度钱包的软键盘,看起来还不错: 下面一起来实现它: 1.写一个键盘控件,这个实现起来比较简单,就不多说了 public class SoftInputBoard extends RelativeLayout implements View.OnClickListener{ private Scroller mScroller; private int mScreenH

Android 中自定义软键盘

Android 中自定义软键盘    图一为搜狗输入法.图二为自定义密码键盘.图三为自定义密码键盘 java源文件 package com.keyboarddemo; import android.content.Context; import android.graphics.Paint; import android.graphics.Rect; import android.text.method.PasswordTransformationMethod; import android.u

Android使用xml自定义软键盘效果(附源码)

Android使用xml自定义软键盘效果原理: 1,软键盘其实是个控件,使用android.inputmethodserver.KeyboardView类定义. 2,主布局中使用帧布局,当我们需要显示软键盘时设置为可见,不需要时设置为不可见. 3,编写xml文件,定义键盘内容.使用xml文件填充KeyBoardView布局 4,设置EditText的监听事件. 完成键盘开发. 上效果图: 1,源码研究android.inputmethodserver.KeyboardView: /* * Cop

第一个app-进阶:1、让EditText屏蔽软键盘仍能光标闪动:2、EditText 的inputType参数类型(密码方式-隐藏显示、只允许输入数字等等)

EditText屏蔽软键盘后,光标消失问题 开始我有个需求:屏蔽系统软键盘 于是找到并使用这个方法: //edit_text1.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出//edit_text2.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出//edit_text3.setInputType(InputType.TYPE_NULL); //屏蔽软键盘弹出 让三个EditText都成功地没有软键盘弹出. 后来我

Android点击其他任意位置收起软键盘

在Android应用开发中,经常出现这样的需求,用户在输入文字的过程中,可能不想继续输入了,通过滑动或者点击其他位置(除软键盘和EditText以外的任何位置),希望能够自动收回键盘,这个功能可能有些rom会自己实现了,但是大部分还是没有自己实现这个功能的,那么如果我们要自己实现,要如何解决呢? 首先,我们当然要先拦截其他任何的用户触摸屏幕的事件,通过重写Activity的boolean dispatchTouchEvent(MotionEvent ev);可是实现拦截用户的触摸事件.代码如下:

android开发(45) 自定义软键盘(输入法)

概述 在项目开发中遇到一个需求,”只要数字键盘的输入,仅仅有大写字母的输入,某些输入法总是会提示更新,弹出广告等“,使得我们需要自定义输入. 关联到的知识 KeyboardView      一个视图对象,展示了键盘.它需要关联到一个 Keyboard对象才能展示. Keyboard              键盘对象,通过加载xml的配置获得键盘的排列. xml 文件键盘描述     一个xml文件,放置在 xml 资源文件夹下,描述了 显示的键盘按钮,和排列,键盘宽度和高度等. 具体实现 准

android 4.0 禁用系统home键(续)

上次的方法,我亲测在note3以及s5上可用.但有热心的朋友回复说在其他类型手机上无法成功禁用系统home键. 于是我又去搜了下,最后发现这一篇帖子: 跪求屏蔽home键和recentApp的方法 !! http://c.tieba.baidu.com/p/3225440025?pn=2 在这篇帖子的最后面有一个很简单的方法,应该可以实现我们所需要的功能.(貌似华为的手机可以了) 如有需要查看帖子详情的请移步:http://c.tieba.baidu.com/p/3225440025?pn=2

android隐藏输入法隐藏软键盘全解

一些项目中需要隐藏输入法,比如登录页面,登录成功后需要隐藏输入法,还有比如发布某个帖子,或者消息是 发布成功后需要隐藏输入法,再比如一个页面中既有EditText 又有Spinner等控件,当你输入完就去点击 Spinner控件是软键盘是没有被隐藏的,这是是影响用户体验的. 这里我写了一个静态的方法,有需要的可以放在Util包中,需要用的时候直接调用就ok /** * 隐藏输入法面板 * * @param activity */ public static void hideInputMetho