Android 自定义 EditText 在 ICS 中不显示光标

2024-03-28

我的应用程序中有一个 EditText,它仅接收来自我放置在屏幕上的按钮的输入。

为了避免出现软键盘,我有一个自定义的 EditText 类,如下所示:

public class CustomEditText extends EditText {

    public CustomEditText(Context context) {         
        super(context);
}

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    // Disables Keyboard;
    public boolean onCheckIsTextEditor() {
        return false;
    }   

}

这成功地阻止了键盘的出现,但是在 ICS 中,这种方法也阻止了光标的出现。

setCursorVisible(true)没有任何影响。

我尝试过隐藏软键盘的替代方法,例如使用android:editable="false" and .setKeyListener(null);但这些解决方案在我的测试中都不起作用。键盘始终出现。

那么,有没有办法在 ICS 中返回光标,同时保持 onCheckIsTextEditor 覆盖不变?


你为什么不尝试像这样禁用软键盘

PINLockactivity.java

    //text field for input sequrity pin
    txtPin=(EditText) findViewById(R.id.txtpin);
    txtPin.setInputType(
      InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    txtPin.setSelection(txtPin.getText().length());
    txtPin.setTextSize(22);
    txtPin.setSingleLine(true);


    //disable keypad
    txtPin.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {

              int inType = txtPin.getInputType(); // backup the input type
              txtPin.setInputType(InputType.TYPE_NULL); // disable soft input
              txtPin.onTouchEvent(event); // call native handler
              txtPin.setInputType(inType); // restore input type
                return true; // consume touch even
        }
        });

对于这个 EditText 字段

xml代码是

<EditText android:layout_width="wrap_content" 
            android:id="@+id/txtpin"  
            android:maxLength="4" 
            android:layout_height="37dp" 
            android:gravity="center_horizontal" 
            android:longClickable="false" 
            android:padding="2dp"

            android:inputType="textPassword|number" 
            android:password="true" 
            android:background="@drawable/edittext_shadow" 
            android:layout_weight="0.98" 
            android:layout_marginLeft="15dp">
                <requestFocus></requestFocus>
   </EditText>

这对我来说工作正常,可以用光标输入安全 PIN 码。

我从按钮而不是键盘获取输入。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 自定义 EditText 在 ICS 中不显示光标 的相关文章

随机推荐

  • 如何将UIScrollView的触摸事件发送到其后面的视图?

    我在另一个视图之上有一个透明的 UIScrollView 滚动视图有内容 文本和图像 用于显示信息 它后面的视图有一些用户应该能够点击的图像 并且它们上面的内容可以使用提到的滚动视图进行滚动 我希望能够正常使用滚动视图 尽管没有缩放 但是当
  • 节点检查器无法连接到节点

    我运行节点 node debug app OR node debug brk app 它回应 debugger listening on port 5858 Express server listening on port 1338 我现在
  • 将 varchar 值转换为 int,如果输入错误,不会引发异常

    有没有办法调用 Sql Server 函数 Convert Cast 而不让它们抛出异常 基本上 我有一列包含字母数字数据 我正在从字段中提取值 并且我想将数据显示为整数值 有时提取的数据不是数字 在这些情况下我希望 Sql Server
  • 为什么我嵌入的 JointJS 元素重叠?

    我正在研究 JointJS 图 使用 DirectedGraph 来处理布局 我试图实现类似于下图的效果 我需要将节点 A B C D E F G H I J 概述 或包含在单独的节点 Foo Bar Hmm 中 当我将所有元素添加到图表中
  • Android 插件将使用哪个 cmake?

    在 Android Studio 3 3 中 我使用本机 C 库 它是用 CMake 构建的 Android 插件 v 3 2 1 将根据配置选择 内置 或 外部 cmakeexternalNativeBuild 如记录于开发者 andro
  • 证书被苹果拒绝

    While configuring certificate for Push Notification on my ios build of cordova project using OneSignal the certificate i
  • 带百分比的虚线圆条

    我正在尝试制作一个带有虚线的圆形进度条 我以编程方式创建stroke dasharray and stroke dashoffset用百分比画一个圆 我需要绘制虚线圆 而不是实心圆 如下所示 我无法将实心圆更改为虚线圆 我是否遗漏了一些东西
  • 使用 C# 中的字典计算字符串中每个重复单词的出现次数[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 编辑 我详细阐述了我的问题更多 解决方案在这里用于修复重复的单词 有人问我每个重复的单词 我是新手 可能不是一个好问题 这是字符串 stri
  • 在屏幕中央显示 Windows 窗体(双屏)

    我有双显示器 想要在屏幕中央显示一个窗口窗体 我有一个变量 MonitorId 0 或 1 I have System Windows Forms Screen allScreens System Windows Forms Screen
  • 解决错误 MSB8011:无法注册输出

    一个奇怪的错误 错误 MSB8011 无法注册输出 请尝试启用每用户 从命令提示符重定向或注册组件 提升的权限 C 程序 文件 MSBuild Microsoft Cpp v4 0 Microsoft CppCommon targets 7
  • Flutter:CupertinoTabBar 在移动到下一个屏幕时不会消失

    我正在运行 Google 的 Flutter Gallery 示例 https github com flutter flutter blob master examples flutter gallery lib demo cuperti
  • Angularjs 1.5 组件模式,带有回调函数,由 IE11 中的嵌入对象多次调用,不更新 Angular 绑定

    在 IE 11 中 我有一个 Angularjs 1 5 模态组件 如下所示 模式打开 在渲染事件中 它使用该组件中包含的回调函数调用角度应用程序外部的函数 这个外部函数启动一个安装过程 启动一个嵌入对象 如下所示 然后定期调用回调函数 我
  • 如何获取Spring事务管理器实例?

    我使用注释来标记应在事务中执行的方法 但是 在一个地方我需要做transactionManager rollback 手动 无注释 我怎样才能获得transactionManager object 如果你想回滚当前事务 你可以使用 Tran
  • 注释正则表达式

    我正在尝试在 JavaScript 中注释正则表达式 似乎有很多关于如何remove使用正则表达式的代码注释 但实际上不是如何commentJavaScript 中的正则表达式因此更容易理解 不幸的是 JavaScript 没有像其他语言那
  • 当缓冲区有未保存的更改且未命名时退出 vim?

    我在 vim 中创建了一个空白的 临时缓冲区 即不与特定文件关联 方法是使用 vnew 然后我玩了一些文本 现在我只想退出编辑器 不保留这个 临时缓冲区 的内容 当我输入命令时 q Vim 给我 No Name E37 No write s
  • 如何增加 Angular UI Bootstrap 中的模式宽度?

    我正在创建一个模式 var modal modal open templateUrl partials welcome controller welcomeCtrl backdrop static scope scope 有没有办法增加它的
  • 如何在vuejs中的输入文本中添加禁用属性?

    我有2个网址 register register sponsor 4 The register路线会给我一个干净的输入文本 我可以在其中输入所有内容第二条路由将带来相同的输入 但其值为 4 并且已禁用 因此用户无法修改它 我设法使用 vue
  • Mapbox GL JS:将基础层设置为白色?

    我想显示带有白色背景的 Mapbox GL JS 地图 而不是地图背景 这是我现在的代码 mapboxgl accessToken mytoken var map new mapboxgl Map container map style m
  • 每分钟有多少个请求被视为“重负载”? (近似)

    人们经常在他们的 优化和性能相关 问题和答案中谈论 重负载 我试图在典型服务器上的常规 Web 应用程序的上下文中 以 SO 及其相当小的基础设施为例 以每分钟的请求数来量化这一点 假设它们立即返回 以简化并获取数据库速度 等式之外 我正在
  • Android 自定义 EditText 在 ICS 中不显示光标

    我的应用程序中有一个 EditText 它仅接收来自我放置在屏幕上的按钮的输入 为了避免出现软键盘 我有一个自定义的 EditText 类 如下所示 public class CustomEditText extends EditText