本地化可点击跨度 Android

2024-01-20

我在我的应用程序中使用本地化。

english : `<![CDATA[Makan <b>daging</b> adalah terlalu banyak karbohidrat]]>`
indonesia : `<![CDATA[Eating <b>meat</b> is too much carbohydrates]]>`

然后在活动中我写:

class MainActivity: AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        setupView()
    }

    private fun setupView() {
        val htmlSpan = SpannableString(HtmlCompat.fromHtml(
            getString(R.string.click_me_button),
            HtmlCompat.FROM_HTML_MODE_COMPACT
        ))
        val styleSpan = htmlSpan.getSpans(0, htmlSpan.length, StyleSpan::class.java).first()
        val spanStart = htmlSpan.getSpanStart(styleSpan)
        val spanEnd = htmlSpan.getSpanEnd(styleSpan)
        val clickSpan = object:ClickableSpan() {
            override fun onClick(widget: View) {
                Toast.makeText(this@MenghubungkanProdukActivity, "Hehehehe", Toast.LENGTH_LONG).show()
                Timber.d("HEHEHE")
            }
        }
        htmlSpan.setSpan(clickSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

        binding.textWarning.text = htmlSpan
    }
}

But clickSpan不触发。它出什么问题了?


实际上我的代码正在运行。但我刚刚意识到我没有设置movementMethod of the TextView

所以解决方案是添加这一行:

binding.textWaring.movementMethod = LinkMovementMethod.getInstance()

所以它看起来像这样:

private fun setupTextWarning() {
    val htmlSpan = SpannableString( ... )
    val moreSpan = htmlSpan.getSpans(0, htmlSpan.length, StyleSpan::class.java).first()
    val spanStart = htmlSpan.getSpanStart(moreSpan)
    val spanEnd = htmlSpan.getSpanEnd(moreSpan)
    val clickSpan = object : ClickableSpan() { ... }
    htmlSpan.setSpan(clickSpan, spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)

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

本地化可点击跨度 Android 的相关文章

  • 随着手指的滑动改变活动

    我想知道如何通过滑动手指来更改活动 或者从右向左滑动手指并更改活动 就像我们在智能手机上看到图片的方式一样 有人知道吗 Cumpz 请参阅以下链接 http savagelook com blog android swipes or fli
  • 按钮点击和声音之间的延迟

    我不太明白为什么按钮点击和声音之间有延迟 以下是我的代码 button Button findViewById R id playBtn final MediaPlayer playButtonClick MediaPlayer creat
  • adb shell 输入带有空格的文本

    如何发送带有空格的文本 例如 一些文字 using adb shell input text 找到以下解决方案 adb shell input text some stext 工作正常 但是有什么简单的方法可以用 s 替换空格吗 Examp
  • 如何检测手机一整圈(360 度)?

    由于我在网络上搜索没有找到任何相关答案 因此我发布了有关检测的问题360度转弯使用加速度计绕其轴的 Android 设备 例如 在横向模式下围绕 y 轴 假设在起始位置 y 值为 0 设备平坦于地面 当手机向前旋转 90 度时y 10 18
  • Context.startForegroundService 然后没有调用Service.startForeground

    这是我的 BroadcastReciever 类 该类处理启动电话状态 Code public class BroadCastRecieverBoot extends BroadcastReceiver Override public vo
  • 如何设计Android建筑物室内地图? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想设计一个 Android 应用程序 它可以帮助学生和其他人在特定建筑物 一层 中导航 显示前往教室的步行方向 我需要帮助 这是您通
  • SDK 管理器缺少模拟器的旧版 Android 系统映像

    我刚刚重新安装了 ADT 捆绑包 20130522 和 Android Studio 因为我的 eclipse 安装再次搞砸了 但那是另一个故事了 在任一版本中 当我启动 SDK Manager 时 都没有任何 2 2 的系统映像 只有 2
  • 尝试在谷歌地图V2 Android应用程序中获取空数组的长度

    我目前正在使用谷歌地图API开发一个Android应用程序 有时我会因为没有明显的原因而发生奇怪的崩溃 在我看来 这是崩溃日志 12 02 16 38 57 071 20796 21137 com appsolute ParkYoo E A
  • Android 偏好设置中的“是”或“否”确认[重复]

    这个问题在这里已经有答案了 我需要在 设置 中实现 重置 选项 单击该设置后 将打开一个简单的对话框 要求确认 我看过了DialogPreference但我似乎无法在任何地方找到好的解决方案或教程 有人可以帮我吗 我是初学者 想法甚至代码都
  • Ionic 4:硬件后退按钮重新加载应用程序

    从事项目并陷入问题 硬件后退按钮重新加载应用程序 我在此应用程序中使用 Angular Router 我退出应用程序的代码 ionViewDidEnter this subscription this platform backButton
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 如何在我的谷歌上嵌入转弯导航

    我想在我的 Android 应用程序中嵌入逐段导航 请给我一个教程或如何执行此操作的想法 提前致谢 如果您不固定使用谷歌地图 您可以使用基于 OpenStreetMap 地图的维基百科版本 的 SDK 有几个不错的 SDK 提供商 skob
  • android gradle插件-离线安装

    我必须在离线电脑上安装 android gradle 插件 通过谷歌搜索 我了解到我可以通过本地 Maven 存储库来做到这一点 但从不成功的尝试和所有关于这个问题的质量保证中我知道这并不简单 我从来没有和maven一起工作过 有经验的人可
  • 如何解决Android错误类型3?

    下面是我在项目中使用的清单格式 但是每当我尝试运行模拟器时 我都会收到下面提到的错误 请给我一个解决该错误的准确解决方案 工具信息 Android studio Nexus S API 22 android 5 1 1 我的清单文件格式
  • 如何让 Mockito 在 androidTest 中工作

    在我的测试中 我如何模拟我编写的课程 这是我的测试代码 import android support test runner AndroidJUnit4 import org junit Before import org junit Te
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • 获取接收者的设备令牌以在 Firebase 中发送通知

    所以我正在学习如何使用 firebase 发送设备到设备的通知 我看到了这个answer https stackoverflow com a 42548586 5237289发送通知 看起来很简单 现在 我知道要获取发件人的令牌 它应该如下
  • 在 Tensorflow-lite Android 中将位图转换为 ByteBuffer(浮点)

    在用于图像分类的tensorflow lite android演示代码中 图像首先转换为ByteBuffer格式以获得更好的性能 这种从位图到浮点格式的转换以及随后到字节缓冲区的转换似乎是一个昂贵的操作 循环 按位运算符 float mem
  • 谷歌地图URL中参数的含义是什么

    我正在 Android 上使用 Webkit 浏览器 我想在以下 URL 中获得一个红色 A 符号
  • AsyncTask的并行执行

    An 异步任务单击时执行 List

随机推荐

  • 从 Linux 为 Windows 交叉编译静态库

    我想在linux下为windows编译静态库 以下是我编译的过程 在linux中使用编译静态库的源代码i586 mingw32msvc cc c static lib c o static lib o 在linux中创建静态库ar rv s
  • UITextField 上的强密码叠加

    我面临着奇怪的覆盖UITextField 我正在使用类型字段textContentType password and isSecureTextEntry true 我还有眼睛按钮 可以通过更改来取消隐藏密码字符isSecureTextEnt
  • Kendo-Grid 列字段验证

    我正在努力使用 API 数据填充 kendo grid 但在一个字段上添加验证也会自动适用于所有其他字段 这是 kendo dataSource 内部的架构 schema model id id fields id editable fal
  • Android 上的 ORMLite 不调用 onCreate

    使用 ORMLite v 4 40 我尝试让我的应用程序运行 但它似乎忽略了 onCreate 函数 我的 DatabaseHelper 看起来像这样 片段样式 public class ORMLiteHelper extends OrmL
  • 动态创建函数/子程序的 AutoHotkey 热键

    自动热键命令Hotkey允许在运行时创建动态热键 但其语法和文档似乎将其限制为内置或现有标签 子例程 这使得much不太有用 热键 键名 标签 选项 有没有办法让它像常规的硬编码热键一样工作 例如 z MsgBox foobar Typic
  • SQL:显示标准差内的平均值和最小值/最大值

    我有以下 SQL 表 Date StoreNo Sales 23 4 34 4323 00 23 4 23 564 00 24 4 34 2345 00 etc 我正在运行一个查询 返回特定时间段内的平均销售额 最大销售额和最小销售额 se
  • Intellij IDEA:找不到“JdbcTemplate”类型的bean

    Intellij IDEA 15 0 3 表示 JdbcTemplate bean 不存在 这是一个 Spring Boot 项目 因此所有需要的 bean 都应该在 boot 内部创建 它工作正常 我可以与我的数据库交互 但 IDEA 将
  • 用于运行 DiskPart 的批处理文件

    我正在尝试开发一个批处理文件来运行并删除 Windows 7 中的隐藏分区 当尝试删除所有分区时 通常我在命令提示符窗口中逐行执行此操作 但试图找出如何创建批处理文件来运行并加快此过程 以下是我在命令提示符下键入的行 disk part R
  • 终结器在其对象仍在使用时启动

    Summary C NET 应该被垃圾收集 C 有一个析构函数 用于清理资源 当对象 A 在我尝试克隆其变量成员之一的同一行被垃圾回收时会发生什么 显然 在多处理器上 有时垃圾收集器会获胜 问题 今天 在 C 培训课程中 老师向我们展示了一
  • 程序化屏幕截图歪曲了最近邻居

    我遇到了屏幕截图 以编程方式使用下面的代码 与图像放大 在我的情况下非常远 并渲染最近邻以保留硬边缘时屏幕上实际显示的内容之间的不一致 我从这些论坛获得了以下屏幕截图代码 但保存的是图像的 双线性 渲染而不是最近邻 UIGraphicsBe
  • 如何在postgresql中将bigint(以毫秒为单位的时间戳)值写入为时间戳

    我试图将我的值存储在带有时区字段的时间戳中 从 1970 年开始以毫秒为单位 select TO CHAR TO TIMESTAMP 1401432881230 DD MM YYYY HH24 MI SS MS 预期的30 5 2014 1
  • 实体框架 - 只有 edmx,没有模板

    我们只想添加 EDMX 文件 而不添加上下文和实体的相应 tt 文件 造成这种情况的原因有多种 但长话短说 我们希望能够拥有 EDMX 并能够在需要时从数据库刷新它 目前 如果我每次 从数据库更新 时删除 tt 文件 它将重新生成我们不需要
  • C# 中的互斥量和信号量是什么?我们需要在哪里实施? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 C 中的互斥量和信号量是什么 我们需要在哪里实施 我们如何在多线程中使用它们 您应该从 MSDN 开始 系统 线程 互斥体 http
  • Paypal Recurring Gem - 暂停付款

    我正在寻找为贝宝经常性宝石 跟随 Rails Cast 设置付款暂停 我不确定是否需要设置 IPN 因为 gem 的文档中没有提及它 我目前拥有的代码不执行任何操作 我在模型中定义了取消重复 但我不确定如何完成代码 因为我很难理解这一切是如
  • 更新 python 包后出现“InvalidRequirement:无效需求,解析错误”错误

    使用更新包 在我的例子中是 IPython 后pip install U ipython运行任何使用入口点的 Python 脚本都会失败并出现以下错误 Traceback most recent call last File home ad
  • 错误:系列的真值不明确 - Python pandas [重复]

    这个问题在这里已经有答案了 我知道这个问题之前已经被问过 但是 当我尝试做一个if声明 我收到错误 我看了这个link https stackoverflow com questions 36921951 truth value of a
  • psql:服务器不支持 SSL,但需要 SSL

    尝试使用命令提示符连接到 postgresql 服务器 使用的命令 psql sslmode require host localhost dbname test 抛出错误 psql 服务器不支持 SSL 但需要 SSL 请帮我解决这个问题
  • 使用 Kotlin 在 Android 应用程序中打开文件选择器

    任务 上传用户可以从设备中选择的图像 我怎样才能打开文件选择器 https en wikipedia org wiki File dialog使用 Kotlin 在 Android 应用程序中按下按钮时出现窗口 在您的活动中 添加按钮单击以
  • WAN 上的 TCP/UDP 套接字服务器

    我用 C 编写了一个套接字服务器 它将用作我参与的一个小型游戏项目的基本设计 套接字服务器在局域网上工作正常 我能够在服务器和客户端之间完全正常通信 然而 在 WAN 上 服务器从客户端接收到所有正确的消息 但客户端没有从服务器接收到任何消
  • 本地化可点击跨度 Android

    我在我的应用程序中使用本地化 english indonesia 然后在活动中我写 class MainActivity AppCompatActivity private lateinit var binding ActivityMain