2017-07-24 82 views
0

此问题涉及Android中的String占位符机制。有很多关于“我如何使用占位符”的帖子,但我的问题是安静的不同(或者我只是愚蠢的),我无法在网上找到答案。使用xml中的初始字符串时隐藏字符串占位符

当我通过xml文件引用它时,如何隐藏String资源中的占位符?

的一点是,如果我有一个像

<string name=mystring>There comes the placeholder: %s</string> 

字符串资源,我用它在我的whatever.xml文件,并设置一个TextView到Android的文字:=“@字符串/ MyString中“那么它确实显示”来了占位符:%s“。但你可以想象我想避免用户看到“%s”;-)

那么我们该怎么做呢?

干杯

回答

0

%s在您的字符串是不是只是一个占位符,它是一个格式说明。你可以在这里阅读所有关于他们:https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

简短的回答你的问题是,它是不可能隐藏从用户此格式说明。但是,这是因为字符串中带有格式说明符的不应该是作为android:text属性的简单参数。

正确的使用这些字符串资源是填充您TextView的在运行时使用Resources.getString(int id, Object... formatArgs)(或Activity.getString(int id, Object... formatArgs))文本(在Java中),此时你会真正的价值传递给代入您的字符串。

使用从你的例子命名,你可能有这样的事情:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    TextView myTextView = (TextView) findViewById(R.id.mytextview); 
    myTextView.setText(getString(R.string.mystring, "real value")); 
} 

注意,您可以使用tools:text="@string/mystring"在布局中看到在设计时的字符串(虽然这仍然会包含任何格式说明)。但真正的用户永远不会看到这个文本。

+0

好吧,有人说这是不可能的满足我的需求:D我想我只是使用“”为真正的价值参数,因为我最初需要的价值是空的..这是这个问题的原因...... – Zuop