2014-10-27 97 views
6

我有一个LoginActivity,我使用AppCompat主题是这样的:带有错误标题栏的AppCompat对话框主题 - 错误?

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

我知道,因为这个职位的谷歌还没有被添加在程序兼容性库对话框材质的主题,所以我假定这将回落在全息。相反,这是我得到:

enter image description here

请记住,我没有使用AppCompattoolBar。在Activity中,我甚至没有提及ActionBar。你上面看到的是默认行为,但我无法弄清楚它来自哪里。这可能是一个错误吗?

(此外,EditText字段不被着色与主色为应用程序。)

+0

“我知道,因为这个职位的谷歌还没有被添加在程序兼容性库材料主题” =>您已经错过了公告! [AppCompat v21 - Pre-Lollipop设备的材料设计!](http://android-developers.blogspot.in/2014/10/appcompat-v21-material-design-for-pre.html) – 2014-10-27 19:27:04

+0

@PareshMayani哦,对不起,我输错了,我毫无疑问多次阅读该页面!我听说,他们还没有在'Dialog'中加入M.D.主题。 (现在我想到了,这是否甚至包括对话框主题,它不同于Dialog对象?) – KickingLettuce 2014-10-27 19:30:15

+0

'Theme.AppCompat.Light.Dialog'确实扩展了'android:Theme.Material.Light.Dialog' 。你使用什么代码来创建对话活动? – ianhanniballake 2014-10-27 19:59:48

回答

6

注:见我最后编辑的可能是最好的解决方案

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

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

编辑:一个副作用是现在看来,所有的对话活动是相同的大小,这可能不适合你。另外,我还没有想出如何去掉标题 - requestWindowFeature和supportRequestWindowFeature与Window.FEATURE_NO_TITLE似乎导致

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:你也可以简单地删除灰色背景 - 这可能是最好的解决方案,因为它不需要基础。前缀

<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>