带有误色标题栏的AppCompat对话主题 - 错误?

时间:2014-10-27 19:14:14

标签: android android-dialog android-appcompat

我有一个LoginActivity我使用AppCompat这样的主题:

 <activity
            android:name=".LoginActivity"
            android:theme="@style/Theme.AppCompat.Light.Dialog"
            android:label="Login" />

我知道在这篇文章中谷歌还没有在DIALOGS的AppCompat库中添加Material Themes,所以我认为它会回归到Holo。相反,这就是我得到的:

enter image description here

请注意,我没有使用AppCompat toolBar。在Activity中,我甚至没有引用ActionBar。你在上面看到的是默认行为,但我无法弄清楚它的来源。这可能是个错误吗?

(此外,EditText字段未使用应用的主要颜色进行着色。)

1 个答案:

答案 0 :(得分:6)

注意:请参阅我的最终编辑,了解最佳解决方案

对于它的价值,我认为这是一个错误。但是,我发现的有效解决方法是使用@style/Base.Theme.AppCompat.Light.Dialog.FixedSize。根据您的截图,我认为这也适合您。但是,我还没有测试调色板着色。

从我在测试中可以看出,这扩展了灰色边框,同时仍允许您使用AppCompat和v21。

编辑:一个副作用是现在看来所有对话框活动都是相同的大小,这可能对你不起作用。另外,我还没弄明白如何删除标题 - 请求Window.FEATURE_NO_TITLE的requestWindowFeature和supportRequestWindowFeature似乎正在导致

java.lang.RuntimeException: Unable to start activity ComponentInfo{myclass}:
android.util.AndroidRuntimeException: requestFeature() must be called before adding content

即使我已经在super.onCreate之前和之后尝试过,并且肯定在setContentView之前

编辑#2:通过XML主题删除标题是有效的,因为你没有标题,所以不用担心会出现奇怪的灰色框,这意味着你可以删除FixedSize设置,对话框将包含它的内容就像在早期版本中那样。

<style name="MyActivityDialogTheme" parent="Base.Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>

编辑#3:你也可以简单地删除灰色背景 - 这可能是最好的解决方案,因为它不需要Base。前缀

<style name="MyTitledActivityDialogTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowTitleBackgroundStyle">@android:color/transparent</item>
    <item name="windowActionBar">false</item>
</style>