我想在strings.xml文件中引用另一个字符串中的字符串,如下所示(特别注意"message_text"字符串内容的结尾):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="button_text">Add item</string>
<string name="message_text">You don't have any items yet! Add one by pressing the \'@string/button_text\' button.</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上面的语法,然后文本打印出"@ string/button_text"作为明文.不是我想要的.我想要打印消息文本"你还没有任何项目!按"添加项目"按钮添加一个项目."
有没有任何已知的方法来实现我想要的?
RATIONALE:
我的应用程序有一个项目列表,但是当该列表为空时,我会显示"@android:id/empty"TextView.TextView中的文本是通知用户如何添加新项目.我想让我的布局变得傻瓜变化(是的,我是个傻瓜:-)
我将详细介绍如何在android XML中连接多个字符串?最后有评论
For clarity, Its works:
<string name="title">@string/app_name</string>.- AndrzejDuś
我做了我自己的例子,但它不起作用.所以确实安杰错误或我做错了什么在我的代码.
R.strings.bbb应该包含"bbb aaa"
但不包含"bbb aaa"它"bbb @strings/aaa"
<string name="aaa">aaa</string>
<string name="bbb">bbb @strings/aaa</string>
Run Code Online (Sandbox Code Playgroud)
查询:
是否可以仅在xml中进行一些串联,而不更改源代码?
我不想在代码中编辑的原因,因为我使用了这个字符串 xml/preferences.xml
例如:
<ListPreference android:key="key_bbb" android:title="@string/bbb" ....
如果你知道我的意思,这里没有可能使用这样的东西
String title = res.getString(R.string.title, appName);
Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我有一个大的字符串资源xml文件.我想在String值中引用并重用声明的资源值.是否可以让R类解析引用值(la @ string/db_table_name)?
<resources>
<string name="db_table_name">tbl_name</string>
<string name="ddl">create table @string/tbl_name</string>
</resources>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点.在常规Java世界中,一些工具使用$ {varname}表达式来解析引用.这可以在Android中完成吗?
我正在使用这样的格式化货币字符串获取一些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但没有更旧.
已解决请参阅我的回答
假设我们有strings_test.xml,它存储用于测试的字符串值,应该在调试版本中显示.当apk构建为发布版本时,所有值都应该更改为空字符串,例如<string name="test_some_card_text">@string/empty</string>.
是否有可能实现这一目标?
一如既往,先谢谢.
在一个Web项目中,我有很多带有非转义字符的XML文件.我将这些字符声明为DTD实体,并在每个XML文件内部包含声明列表,如下所示:
!DOCTYPE article SYSTEM "../../pubmedref/archivearticle.dtd" [
<!ENTITY bull "•">
<!ENTITY copy "©">
... a long list ...
]>
Run Code Online (Sandbox Code Playgroud)
有什么办法可以在外部文件中包含这些声明并将其导入XML文件中吗?使用XSLT将XML文件呈现给浏览器.
FWIW,我试过引用一个.ent文件,但它不适用于任何浏览器.
我正在尝试复制此答案中给出的示例:
该图说明了如何使用外部实体将 XML 文件的片段包含在另一个 XML 文件中。
文档.xml:
<?xml version="1.0" standalone="no" ?>
<!DOCTYPE doc [
<!ENTITY otherFile SYSTEM "otherFile.xml">
]>
<doc>
<foo>
<bar>&otherFile;</bar>
</foo>
</doc>
Run Code Online (Sandbox Code Playgroud)
其他文件.xml:
<baz>this is my content</baz>
Run Code Online (Sandbox Code Playgroud)
当我尝试通过在任何浏览器中打开 doc.xml 来测试这一点时,我只是得到:
<doc>
<foo>
<bar/>
</foo>
</doc>
Run Code Online (Sandbox Code Playgroud)
呈现。
难道它不应该渲染包含的文件吗?