Android自定义EditText和后退按钮覆盖

2024-03-06

我想在显示软键盘时覆盖后退按钮。基本上,当按下后退按钮时,我希望键盘关闭,并且我想将一些文本附加到用户在编辑文本字段中键入的内容上。所以基本上我需要知道键盘何时关闭。经过搜索后,我意识到没有可用的 API,唯一真正的方法是创建 EditText 类。

所以我创建了自己的 EditText 类并像这样扩展了 EditText

public class CustomEditText extends EditText
{

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

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

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

    private void init()
    {

    }

}

我也添加了这个方法

    @Override
        public boolean dispatchKeyEventPreIme(KeyEvent event)
        {
            if (KeyEvent.KEYCODE_BACK == event.getKeyCode())
            {
                Log.v("", "Back Pressed");

                            //Want to call this method which will append text
                            //init();
            }
            return super.dispatchKeyEventPreIme(event);
        }

现在这个方法确实覆盖了后退按钮,它关闭了键盘,但我不知道如何将文本传递到 EditText 字段中。有谁知道我会怎么做?

还有另一个简单的问题,有谁知道为什么这个方法被调用两次?正如您暂时所看到的,我添加了一条快速 logcat 消息来测试它的工作原理,但是当我点击后退按钮时,它会打印两次,为什么会这样做?

任何帮助将非常感激!!


这是由于在两者上都调用了dispatchKeyEventPreImeACTION_DOWN http://developer.android.com/reference/android/view/KeyEvent.html#ACTION_DOWN and ACTION_UP http://developer.android.com/reference/android/view/KeyEvent.html#ACTION_UP.
仅当按下 KEY 时才需要进行处理。所以使用

if(event.getAction () == KeyEvent.ACTION_DOWN)

编辑: 对于第一个问题你可以做

setText(getText().toString() + " whatever you want to append"); 

in dispatchKeyEventPreIme

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

Android自定义EditText和后退按钮覆盖 的相关文章

随机推荐

  • 为什么kotlin中只能委托接口?

    我见过很少类似的问题 但没有人解释为什么委托仅限于接口 在实践中 大多数时候我们的东西实际上根本没有接口 它是一个不实现任何内容但提供一些功能或实现抽象类的类 是否存在任何基本限制迫使其仅限于接口 或者我们可以期望 kotlin 将来拥有无
  • 如何在需要时在服务器上发送设备的位置

    我正在开发一个应用程序 其中我需要设备的当前纬度和经度 获取纬度 经度的时间范围将由服务器决定 每当需要获取纬度 朗度时 服务器都会发送通知 当设备收到通知时 服务器 同时设备将其位置发送到服务器 一些条件 即使设备没有 GPS 我也想要纬
  • 如何将带有“(ISO-8859-1)字符的字符串转换为普通(UTF-8)字符?

    li Jain R K and Iyengar S R K Advanced Engineering Mathematics Narosa Publications li 我的数据库中有很多原始的 html 字符串 所有的文字都有这些奇怪的
  • rand.Seed(SEED) 已弃用,如何使用 NewRand(NewSeed( ) )?

    我现在正在学习go 我举个例子 我有这条线 rand Seed SEED 但是关于 go 的 vscode 扩展告诉我 rand Seed 自 Go 1 20 起已被弃用 自 Go 1 0 起出现了替代方案 调用 Seed 并期望从全局随机
  • Spring 4.1.5 中不允许属性“local”出现在元素“ref”中

    我目前正在经历Mkyong Spring 3 0教程 http www mkyong com spring spring bean reference example 他继续澄清这两件基本事情 1 不同XML文件中的Bean 如果您引用不同
  • 如何在 SwiftUI 中创建透明矩形

    我想让图像通过一个小矩形 100 透明 对所有其他矩形 50 透明 就好像打一个小孔来透视小矩形一样 这是我的代码 struct ImageScope View var body some View ZStack Image test pi
  • 冬眠。在更新子列表中删除

    我有标准 ManyToOneHibernate 中的关联 更新时 我正在创建新实体 使用new关键字 并填充必要的值 还插入了 ID 值来自 UI 以同样的方式 我创建新的子对象集合 按值填充每个子对象 也插入 ID 并将集合存储在父对象中
  • 如何声明返回节点集的用户定义函数?

    我想要这样的东西
  • 如何获取HTTP Post请求的JSON内容?

    我想将 JSON 文件从 Unity 应用程序发送到 Laravel 后端 我的帖子请求似乎有问题 但我不知道它是什么 使用 Unity 发送请求 public void SendRequest serializable struct Of
  • tesseract 无法识别该图像中的这个单词,这正常吗?

    我需要从这样的小图像中提取单词 我在命令行中使用带有西班牙语选项的 tesseract 如下所示 tesseract category png l spa psm 7 category txt 我认为该文本一定很容易被 OCR 解析 但该单
  • JavaScript 中的 array.select()

    JavaScript 是否具有与 Ruby 类似的功能 array select x x gt 3 就像是 array select function x if x gt 3 return true 有Array filter var nu
  • 第一次捆绑安装,堆栈级别太深

    我使用命令创建了一个全新的 Rails 项目rails new qbc database mysql 它完美地创建了所有文件 但是 在捆绑包安装时出现错误 bundle install Fetching gem metadata from
  • 在 RESTful Web 服务中,服务器花很长时间来响应是否可以接受?

    我正在使用 Flask restful 开发 RESTful Web 服务 客户端需要能够请求服务器执行作业 这项工作可能需要大约 1 秒到大约 1 小时才能完成 一般情况下 预计需要 1 5 分钟 作业完成后 客户端需要下载 JSON 转
  • 插入时返回 ID?

    我有一个 INSERT 查询 我希望数据库返回我刚刚插入的行的 ID sqlString INSERT INTO MagicBoxes OwnerID Key Name Permissions Active LastUpdated VALU
  • 有条件切换情况

    我是否在条件下编写了正确的 switch case var cnt div1 p length alert cnt switch cnt case cnt gt 10 cnt lt 20 alert 10 break case cnt gt
  • EL 表达式将整数解析为 long

    我在 JBoss 7 上使用带有 primefaces 的 JSF 2 0 在代码的某些部分 我有以下内容 public void setItemValue int value this value value 并在 xhtml 中
  • 无法从 SwfTreeView 选择复选框

    在我的应用程序中 有一个 swfTreeView 对象 它有 2 个父复选框 Total Systmatic 并且两个父复选框都有 2 个子复选框 EQ FX for Total 和 EX IR for Systematic 我无法选择这些
  • 如何等待流完成管道传输? (节点)

    我有一个 Promise 的 for 循环数组 所以我使用 Promise all 来遍历它们 然后调用 then let promises promises push promise1 promises push promise2 pro
  • 我可以为背景大小实现纯 CSS 后备吗?

    这对于支持的浏览器来说效果很好background size 否则 图像会缩放 2 倍 a background image url img2x jpg 1000x1000 background size 100 height 500px
  • Android自定义EditText和后退按钮覆盖

    我想在显示软键盘时覆盖后退按钮 基本上 当按下后退按钮时 我希望键盘关闭 并且我想将一些文本附加到用户在编辑文本字段中键入的内容上 所以基本上我需要知道键盘何时关闭 经过搜索后 我意识到没有可用的 API 唯一真正的方法是创建 EditTe