首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在BulletSpan中将项目符号半径设置为低于api级别28?

在BulletSpan中将项目符号半径设置为低于API级别28的方法是通过自定义Span来实现。BulletSpan是Android提供的一个用于在文本中插入项目符号的Span类,但是在API级别28及以下,无法直接设置项目符号的半径。

要实现这个功能,可以创建一个自定义的BulletSpan类,并重写其drawLeadingMargin()方法来绘制自定义的项目符号。以下是一个示例代码:

代码语言:txt
复制
import android.graphics.Canvas;
import android.graphics.Paint;
import android.text.Layout;
import android.text.style.BulletSpan;

public class CustomBulletSpan extends BulletSpan {
    private static final int DEFAULT_RADIUS = 10; // 自定义的项目符号半径

    public CustomBulletSpan() {
        super(DEFAULT_RADIUS);
    }

    @Override
    public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom,
                                  CharSequence text, int start, int end, boolean first, Layout layout) {
        if (layout.getParagraphDirection(layout.getLineForOffset(start)) == Layout.DIR_RIGHT_TO_LEFT) {
            dir = -1;
        } else {
            dir = 1;
        }

        int oldColor = p.getColor();
        p.setColor(p.linkColor);

        c.drawCircle(x + dir * DEFAULT_RADIUS, (top + bottom) / 2.0f, DEFAULT_RADIUS, p);

        p.setColor(oldColor);
    }
}

使用自定义的BulletSpan类替代原始的BulletSpan类,即可将项目符号半径设置为低于API级别28。使用方法如下:

代码语言:txt
复制
SpannableString spannableString = new SpannableString("This is a bullet list");
spannableString.setSpan(new CustomBulletSpan(), 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);

这样就可以在BulletSpan中将项目符号半径设置为低于API级别28了。

注意:以上示例代码仅为演示如何自定义BulletSpan的项目符号半径,实际使用时可能需要根据具体需求进行修改和调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

真·富文本编辑器的演进之路-【译】破解Span性能之谜

最后,我们将看到我们如何在同一进程或进程之间传递Span,并在此基础上,当你决定创建自己的自定义Span时,需要注意那些事项。...假设你想定义一个允许自定义CustomBulletSpan,因为现有的BulletSpan定义了一个4px的固定半径大小。下面是你如何实现它,以及每种方式的后果是什么。...创建一个CustomBulletSpan,该CustomBulletSpan扩展了BulletSpan,但也允许Bullet大小设置一个参数。...这意味着当文本被绘制时,它将具有框架的默认Bullet半径,而不是设置的Bullet半径。...这意味着当文本被绘制时,它将拥有框架的默认的Bullet半径,而不是在CustomBulletSpan中设置半径

1.4K10

论 Android 中 Span 的正确打开方式

最后,我们将了解如何在进程中或跨进程传递 span,以及基于这些,你在创建自定义 span 时需要警惕哪些陷阱。...一个永不改变的 TextView 设置文字 如果你只需要设置 TextView 的文字一次,并永远不需要更新它,你可以创建一个新的 SpannableString 或 SpannableStringBuilder...这是通过把getSpanTypeIdInternal 和 writeToParcelInternal 设置隐藏方法实现的。它们都被 TextUtils.writeToParcel 使用。...假如你需要定义一个着重号 span,它可以自定义着重号的大小,因为现有的 BulletSpan半径规定为 4px。...这意味着如果文字被绘制,它将具有框架的默认文字半径,而不是在 CustomBulletSpan 中设置半径

1.6K50
  • Android中Textview文字设置不同颜色、下划线、加粗、超链接

    项目中会遇到在一行文字,部分需要不同的文字颜色、下划线以及超链接来展示,下面介绍两种方式实现: 1、SpannableString来实现 1)简介 对于给Textview设置不同颜色,就不得不提SpannableString...); //设置背景色青色 //设置字体样式正常,粗体,斜体,粗斜体 msp.setSpan(new StyleSpan(Typeface.NORMAL), 18, 20...android.graphics.Typeface.BOLD_ITALIC, 30, csl, csllink), 51, 53, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //设置项目符号...msp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // //第一个参数表示项目符号占用的宽度...,第二个参数项目符号的颜色 //设置图片 // Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher

    4.9K21

    log4j 详解

    , … [level] 中可填写 info, debug 等级别,它表示所有 appender 的最低输出级别填写 info,则所有 appender 中低于 info 级别的日志将不会生效。... %C 输出类名,有的类名很长,有的类名很短,会导致日志比较凌乱。为了解决该问题,Log4j允许设置输出内容的长度等,不够的会用空格补上。...设置的方法是在 % 与参数符号间添加数字, 例如 %20p, %-20p等。正数表示右对齐,负数表示左对齐,数字表示最小宽度,不足时用空格补齐。...默认情况下是特定于平台的编码方案 threshold 这个 appender 阈值级别 File 日志文件的路径, d:/test.log append 默认设置true,这意味着记录的信息被附加到同一文件的末尾...默认设置false bufferSize 如果 bufferedI/O 启用,这表示缓冲区的大小,默认设置8KB 数据库 log4j API 提供 org.apache.log4j.jdbc.JDBCAppender

    59520

    非 SDK 接口常见问题 | Android 开发者 FAQ Vol.13

    <28):允许调用深灰名单中的接 若应用的 target SDK Android P 或更高 (即 targetSdkVersion >= 28):深灰名单与黑名单的限制相同 黑名单:不论 target...1 adb shell settings put global hidden_api_policy_p_apps 1 更改回默认设置: adb shell settings delete global...开发者可下载 AOSP 开源项目,然后通过以下命令生成黑名单:make hiddenapi-aosp-blacklist 生成文件的路径:out/target/common/obj/PACKAGING...API 名单相关问题 Q5: 如何在开发者预览版系统映像文件中找到黑名单和灰名单? A:这些名单被编码在平台 dex 文件中的字段和方法的访问标志中。系统映像中没有包含这些名单的单独文件。...OEM 厂商可以在黑名单中添加自己的 API,但是不允许从原始 / AOSP 黑名单 (或灰名单) 中移除项目

    1.4K30

    学(kao)习(bei)官方关于64k异常处理 ^_^

    注:如果项目配置时所面向的 Dalvik 可执行文件分包使用的是 minSdkVersion 20 或更低版本,并且将其部署到运行 Android 4.4(API 级别 20)或更低版本的目标设备上,则...解决Android 64k 要解决Android64k,你需要将你的应用项目设置使用 Dalvik 可执行文件分包配置,其次需要对项目进行以下修改,具体取决于应用支持的最低 Android 版本。...如果 minSdkVersion 设置 21 或更高值,只需在模块级 build.gradle 文件中将 multiDexEnabled 设置 true,如下示: defaultConfig {...如果APP目标 API 级别低于 14,请务必针对这些版本的平台进行测试,因为应用可能会在启动时或加载特定类群时出现问题。...对于发布定制,将 minSdkVersion 设置适于您的实际最低支持级别。此设置生成的 Dalvik 可执行文件分包 APK 可兼容更多设备,但构建时间更长。

    96820

    Android Study 之学(kao)习(bei)官方关于64k异常处理 ^_^

    注:如果项目配置时所面向的 Dalvik 可执行文件分包使用的是 minSdkVersion 20 或更低版本,并且将其部署到运行 Android 4.4(API 级别 20)或更低版本的目标设备上,则...解决Android 64k 要解决Android64k,你需要将你的应用项目设置**使用 Dalvik 可执行文件分包配置,其次需要对项目进行以下修改,具体取决于应用支持的最低 Android 版本。...如果 minSdkVersion 设置 21 或更高值,只需在模块级 build.gradle 文件中将 multiDexEnabled 设置 true,如下示: ?...如果APP目标 API 级别低于 14,请务必针对这些版本的平台进行测试,因为应用可能会在启动时或加载特定类群时出现问题。...以下构建配置示例展示了如何在 Gradle 构建文件中设置这些定制: ?

    83310

    Multidex记录一:介绍和使用

    Google官方:配置方法数超过 64K 的应用 Android 5.0 之前版本的 Dalvik 可执行文件分包支持 Android 5.0(API 级别 21)之前的平台版本使用 Dalvik 运行时来执行应用代码...Android 5.0 及更高版本的 Dalvik 可执行文件分包支持 Android 5.0(API 级别 21)及更高版本使用名为 ART 的运行时,后者原生支持从 APK 文件加载多个 DEX...配置您的应用进行 Dalvik 可执行文件分包 将您的应用项目设置使用 Dalvik 可执行文件分包配置需要对您的应用项目进行以下修改,具体取决于应用支持的最低 Android 版本。...修改gradle配置文件 如果您的minSdkVersion 设置 21 或更高值,您只需在模块级 build.gradle 文件中将multiDexEnabled 设置 true,如此处所示: android...,这个主要是因为Dalvik linearAlloc 的一个限制,这个限制在 Android 4.0 (API level 14)已经增加了, 应用也有可能在低于 Android 5.0 (API level

    1.7K10

    译文:Python深度学习框架评价

    优点: · 灵活 · 如果正确使用,性能高 缺点: · 大量的学习曲线 · 低级别API · 编译复杂的符号图可能很慢 资源: ·...文档:https://www.tensorflow.org/api_docs/python/ 概要: TensorFlow是较低级别符号计算库(Theano)和更高级别的网络规范库(块和Lasagne...它支持在多个GPU上运行机器学习模型,高效的数据流水线提供实用程序,并具有用于模型的检查,可视化和序列化的内置模块。...最近,TensorFlow团队宣布计划与Keras支持内置,所以很快Keras将是TensorFlow项目的一个子集。...大家对PyTorch在Python深度学习生态系统中将扮演的角色众说纷纭,但所有迹象表明PyTorch是我们列表中其他框架的一个非常受人尊敬的替代品。

    1.2K80

    领导都喜欢看--基于Vue的数据可视化之集成地图聚合功能

    大体的功能就是根据缩放级别聚合数据,在级别一下,只展示数字和,在级别二下展示更具体的数字和,在级别三下展示具体的信息。...在申请完key之后,我们就可以把相关的依赖引入到我们的项目中了,打开百度地图的api: https://lbsyun.baidu.com/solutions/mapvdata // 第一步 <script...src="//<em>api</em>.map.baidu.com/<em>api</em>?...minSize: 30, // 聚合点显示的最小直径 maxSize: 50, // 聚合点显示的最大直径 clusterRadius: 150, // 聚合范围<em>半径</em>...,当地图放大<em>级别</em>高于此值将不再聚合 minZoom: 5, // 聚合的最小<em>级别</em>,当地图放大<em>级别</em><em>低于</em>此值将不再聚合 // 是否显示文字 showText:

    1.6K10

    Android后台网络任务:从WorkManager到JobScheduler的全面解析

    对于 API 级别低于 23 的设备,WorkManager 会使用 AlarmManager 和 BroadcastReceiver 的组合进行任务调度。...例如,我们可以设置一个电量阈值,当电量低于这个阈值时,暂停执行后台任务。 另外,我们还可以在设备充电时执行后台任务。因为充电时电量充足,执行后台任务对电量的影响较小。...仅支持Android 5.0(API级别21)及以上 针对高性能和节能要求较高的应用 五、案例分享 以下是一个实际的Android后台网络任务项目案例,讲述了在开发过程中遇到的问题、使用的技术和解决方案...问题:如何在不同API级别的设备上实现高效且节能的后台任务调度?...实现节能和网络优化,我们设定了任务在设备充电并连接 Wi-Fi 时执行。 使用 WorkManager:它自动执行满足约束条件的任务,无需关注设备 API 级别

    26310

    【已解决】使用SLF4J时的一个错误Failed to load class org.slf4j.impl.StaticLoggerBinder

    如果您负责打包应用程序并且不关心日志记录,那么将slf4j-nop.jar放在应用程序的类路径中将摆脱此警告消息。...请注意,嵌入式组件(库或框架)不应声明对任何SLF4J绑定的依赖关系,但仅依赖于slf4j-api。当库声明对SLF4J绑定的编译时依赖性时,它会将该绑定强加给最终用户,从而否定SLF4J的目的。...artifactId>     ${slf4j.log4j.version}     test 因为我把范围设置...:只输出不低于级别的日志信息DEBUG < INFO < WARN < ERROR < FATAL # WARN:日志级别     CONSOLE:输出位置自己定义的一个名字       logfile...CONSOLE,logfile # 配置CONSOLE输出到控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  # 配置CONSOLE设置自定义布局模式

    5.1K20

    嵌入式:ARM指令集分类及编码

    : opcode操作码;指令助记符,ADD、STR等。...在ARM的指令编码表中,统一占用编码的最高四位[31:28]来表示“条件码”(即“cond”)。...负 无进位 结果负数 算术操作未得到进位 BLO 低于符号数比较,结果低于 BCS BHS 有进位 高于或相等 算术操作得到了进位 无符号数比较,结果高于或相等 BVC 无溢出 有符号整数操作...,未出现溢出 BVS 有溢出 有符号整数操作,出现溢出 BGT 大于 有符号整数比较,结果大于 BGE 大于或相等 有符号整数比较,结果大于或相等 BLT 小于 有符号整数比较,结果小于 BLE...小于或相等 有符号整数比较,结果小于或相等 BHI 高于 无符号数比较,结果高于 BLS 低于或相等 无符号数比较,结果低于或相等 ARM指令集编码 ARM指令集是以32位二进制编码的方式给出的

    1.8K30

    Android 9.0适配及部分新特性介绍

    1.2.2 targetSdkVersion 设置 28 时影响应用的关键变化(列举了常用的,具体看官方文档): * 默认情况下启用网络传输层安全协议 (TLS):如果应用以 Android 9 或更高版本目标平台...如果您的应用需要为特定域名启用明文,您必须在应用的网络安全性配置中针对这些域名将 cleartextTrafficPermitted 显式设置 true。...构建序列号弃用:在 Android 9 中,Build.SERIAL 始终设置 "UNKNOWN" 以保护用户的隐私。...白名单:即SDK 浅灰名单(72个):仍可以访问的非 SDK 函数/字段 深灰名单(7个):对于目标 SDK 低于 API 级别 28 的应用,允许使用深灰名单接口; 对于目标 SDK API...针对问题三:测试了一下只有targetSdkVersion 设置 28时才会出现该问题,与设备的系统版本无关,上蚂蚁金服平台查了下最新文档发现,App支付功能近期有了更新和升级,具体来说就是:打包方式更换为

    3.3K40

    【已解决】使用SLF4J时的一个错误Failed to load class org.slf4j.impl.StaticLoggerBinder

    如果您负责打包应用程序并且不关心日志记录,那么将slf4j-nop.jar放在应用程序的类路径中将摆脱此警告消息。...请注意,嵌入式组件(库或框架)不应声明对任何SLF4J绑定的依赖关系,但仅依赖于slf4j-api。当库声明对SLF4J绑定的编译时依赖性时,它会将该绑定强加给最终用户,从而否定SLF4J的目的。...artifactId>     ${slf4j.log4j.version}     test 因为我把范围设置...:只输出不低于级别的日志信息DEBUG < INFO < WARN < ERROR < FATAL # WARN:日志级别     CONSOLE:输出位置自己定义的一个名字       logfile...CONSOLE,logfile # 配置CONSOLE输出到控制台 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender  # 配置CONSOLE设置自定义布局模式

    60910
    领券