数字选择器中的跨区文本

Posted

技术标签:

【中文标题】数字选择器中的跨区文本【英文标题】:Spanned text in Number picker 【发布时间】:2019-04-27 06:13:43 【问题描述】:

我在 android 中显示仪表 m2 时遇到问题。我可以在 TextView 中为 setText 使用 SpannedBuilderString 并且它可以工作。

问题是我想在 Number Picker 中显示 m2 像 50 m2 100 m2但数字选择器只显示字符串,我不能。请帮我解决这个问题。谢谢大家。

【问题讨论】:

sr 延迟回复,就像我在问题中所说的那样。我可以通过 SpannableStringBuildersuperscriptSpan 为 textView 设置带有 m2 的文本。因为 setText 接收 Spanned 所以我的代码工作。但我在数字选择器中看不到它。无论如何,我使用 Tamir Abutbul 的 unicode 找到了解决方案 【参考方案1】:

使用 Unicode 字符很容易:

首先使用您的值创建一个数组(这将转到数字选择器)

String mValues[] =  "100 " + "\u33A1", "200 " + "\u33A1" ;

现在使用此方法创建具有自定义值的数字选择器:

 private void setNubmerPicker(NumberPicker nubmerPicker,String [] numbers )
    nubmerPicker.setMaxValue(numbers.length-1);
    nubmerPicker.setMinValue(0);
    nubmerPicker.setWrapSelectorWheel(true);
    nubmerPicker.setDisplayedValues(numbers);

最后一步调用这个方法:

  setNubmerPicker(yourNumberPicker,mValues);

【讨论】:

【参考方案2】:

将此自定义Formatter 应用于您的NumberPicker

NumberPicker.Formatter formatter = new NumberPicker.Formatter()
    @Override
    public String format(int i) 
        return  String.valueOf(i) + " " + Character.toString((char) 0x33A1);
    
;

numberPicker.setFormatter(formatter);

【讨论】:

以上是关于数字选择器中的跨区文本的主要内容,如果未能解决你的问题,请参考以下文章

如何更改日期选择器中的文本大小?

Swiftui:将选择器中的选定文本与前沿对齐

选择器中的 SwiftUI 和枚举

我如何在文本输入中显示从时间选择器中选择的时间?

在 jQuery UI 日期选择器中在日期旁边显示附加文本

我如何在 jquery 日期选择器中制作一个清晰的按钮