我正在使用设计时命名空间来使用设计时属性和元素。我用
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
Run Code Online (Sandbox Code Playgroud)
现在,我需要定义设计时间元素,比方说
<d:TextBlock Text="design time text block" />
Run Code Online (Sandbox Code Playgroud)
但是在运行时,我想显示其他文本块:
<TextBlock Text="runtime text block" />
Run Code Online (Sandbox Code Playgroud)
如何定义这两个元素,以便显示设计时元素而不是各自的运行时元素?
我弄清楚的方法是:
<Grid>
<d:TextBlock Text="design time text block" />
<TextBlock Text="runtime text block" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
但我不想定义额外的容器。我也可以使用 <d:Grid>`,但它只是在运行时省略了整个网格和文本块。
我知道我可以使用d:Text设计时属性,但在实际情况下我需要在元素上设置附加属性,其中已经有自己的命名空间,例如。ns:AttachedProp我不能使用两个命名空间,如d:ns:AttachedProp.
谷歌添加了很好的" 设计时属性 "(从这里找到它)仅用于UI设计师模式,所以,例如,如果你想在textView(或EditText)上显示文本(帮助你理解如何它看起来像),你可以添加:
<EditText
tools:text="John Doe"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
来自Google的示例:

实际上,这应该适用于您已经可以使用的任何属性.不确定是否有任何限制,但它非常酷.
现在,当我在Eclipse中执行此操作时(只是一个带有"tools:text"属性的简单textView),再加上最新的ADT和SDK(22.3.0.v201310242005-887826),它就不起作用了.它只是没有做任何事情.
这个功能是否有可能只适用于新的IDE(android studio)?如果是这样,怎么可能呢?Google不应该将每个Android开发功能添加到ADT吗?
另外,在某些网站上它被称为"设计时布局属性",有些网站只是"设计时属性"?