我需要仅使用主题/样式选项运行自定义对话框布局。通过代码运行自定义对话框布局不适合我。我想这应该是可以通过属性"android:layout", "android:dialogLayout", "*android:dialogCustomTitleDecorLayout", "*android:dialogTitleIconsDecorLayout", "*android:dialogTitleDecorLayout".<br/><br/>
我活动的onCreate负载布局的对话风格的平均值:使用主题/样式运行自定义对话框布局
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.MyDialog);
setContentView(R.layout.mydialog);
this.setTitle("A title");
}
风格的xml:
<style name="MyDialog" parent="android:Theme.Holo.Light.Dialog">
<item name="android:windowTitleStyle">@style/MyDialog.WindowTitle</item>
<item name="android:layout">@layout/dialog_title</item>
<item name="android:dialogLayout">@layout/dialog_title</item>
<item name="*android:dialogCustomTitleDecorLayout">@layout/dialog_title</item>
<item name="*android:dialogTitleIconsDecorLayout">@layout/dialog_title</item>
<item name="*android:dialogTitleDecorLayout">@layout/dialog_title</item>
</style>
<style name="MyDialog.WindowTitle">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/TextAppearance_WindowTitle</item>
</style>
<style name="TextAppearance_WindowTitle">
<item name="android:textSize">32sp</item>
<item name="android:textColor">@+color/verdeTI</item>
</style>
请注意,文本颜色的标题是正确的应用(@ +颜色/ verdeTI),所以我相信级联样式是正确的,但似乎没有布局选项可用,因为我继续看到标准的对话框布局。我的“dialog_title”使用完全不同的ImageView作为分隔符,所以我可以确定它何时加载。 自定义分隔线只是主要原因,因为我需要不同的布局。
更新15/4/2014
一些样式属性,然而,不被任何View元素的支持,只能被应用为主题。这些样式属性适用于整个窗口而不适用于任何类型的视图。例如,主题的样式属性可以隐藏应用程序标题,隐藏状态栏或更改窗口的背景。这些样式属性不属于任何View对象。要发现这些仅限主题的样式属性,请查看以窗口开头的属性的R.attr引用。例如,windowNoTitle和windowBackground是仅当样式作为活动或应用程序的主题应用时才有效的样式属性。有关将样式应用为主题的信息,请参阅下一节。
确定以“窗口”开头的属性仅适用于不在样式中的主题。什么是布局属性?当他们被应用?
我很好奇,这些“明星”前缀是什么意思,你为什么使用它?在'* android:dialogCustomTitleDecorLayout'中 - 这个'*'符号在android样式框架中有什么意义? – Drew
某处我看到这是引用不能直接访问的私人android属性的方式(没有*) – alrama
真的,这是。有用。 – Drew