我正在使用这样的格式化货币字符串获取一些JSON数据
?35
Run Code Online (Sandbox Code Playgroud)
但是,我注意到在Nexus 5(Lollipop)上它显示正确,但其他手机,如HTC one mini和Samsung GT-I9505,它显示一个空白字符.
我试图研究这个问题,除了在XML布局文件中,我找不到解决方案,确保该行存在
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
但我仍然有同样的问题
请帮忙
编辑2015年5月15日
加载自定义字体NotoSans(请注意我知道这会泄漏内存,但它只是一个快速测试)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView ruble = (TextView)findViewById(R.id.ruble);
Typeface myFont = Typeface.createFromAsset(getAssets(),"fonts/NotoSans-Regular.ttf");
ruble.setTypeface(myFont);
}
Run Code Online (Sandbox Code Playgroud)
strings.xml中定义的俄罗斯卢布符号(注意我尝试了所有)
<string name="rubleSymbolJava">\u20BD</string>
<string name="rubleSymbolHTML">₽</string>
<string name="rubleSymbolHTMLHex">₽</string>
Run Code Online (Sandbox Code Playgroud)
同样的问题,在老式手机上显示为方形但适用于Android 5.0但没有更旧.
已解决请参阅我的回答
Ers*_*man 12
我修好了.我刚刚使用了2015年1月更新的新版Google Roboto字体,并使用了卢布符号.
https://www.google.com/fonts/specimen/Roboto#pairings
研究表明,2014年俄罗斯改变了他们的货币符号,因此旧字体没有新的字形,所以对于有类似问题的其他人,看看你的字体是否已更新
问题手机的默认字体可能缺少俄罗斯卢布标志符号.尝试将其硬编码到应用程序中的某个TextView中,以确保这确实是问题,而不是其他一些JSON解析错误左右(似乎不太可能,因为它适用于某些手机).
如果缺少字形是您的问题,在项目中包含您自己的字体相当简单.这样你就可以确保你可以支持你需要的所有字形.
以下是以编程方式执行此操作的步骤:
TypeFace通过TypeFace myFont = Typeface.createFromAsset(activity.getAssets(), "fonts/font.ttf")(替换myFont并font.ttf根据需要)将其作为对象 加载TextViews,Paints等通过myTextView.setTypeface(myFont).似乎还有一些技巧可以让你将它设置为整个应用程序的默认字体.我没有太多使用过图形设计师,但我确信它也不会那么困难.此外,这些说明适用于Android Eclipse插件.虽然Android Studio中的代码可能相同,但我不确定文件夹结构是否相同.文档说明了将资产置于主要/资产而不仅仅是资产,例如......
需要考虑的几件事:
一个额外的好处:您可以将一些自己的自定义字形添加到字体中,只需将相应的"字母"放入TextView(记住Wingdings?),就可以轻松地将简单的单色矢量图形包含到您的应用中.
| 归档时间: |
|
| 查看次数: |
5215 次 |
| 最近记录: |