2014-10-27 83 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>