2014-10-27 5 views
6

Mam LoginActivity gdzie używam AppCompat motywu takiego:Motyw okna dialogowego AppCompat z niewłaściwym paskiem tytułowym - Bug?

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

Zdaję sobie sprawę, że od tego postu Google nie ma jeszcze dodanego materiału tematów w bibliotece AppCompat za dialogi, więc założyć, spadnie z powrotem na Holo. Zamiast tego, jest to, co mam:

enter image description here

Należy pamiętać, że nie używam AppCompattoolBar. W numerze Activity nie mam nawet odniesienia do . To, co widzisz powyżej, jest domyślnym zachowaniem, ale nie wiem, skąd pochodzi. Czy to może być błąd?

(Również, pola EditText są nie jest zabarwiona na kolor podstawowy dla aplikacji).

+0

„Zdaję sobie sprawę, że od tego postu Google nie ma jeszcze dodanego materiału tematów w bibliotece AppCompat” => Nie odebrano zapowiedź! [AppCompat v21 - Material Design dla urządzeń Pre-Lollipop!] (Http://android-developers.blogspot.in/2014/10/appcompat-v21-material-design-for-pre.html) –

+0

@PareshMayani Oh, przepraszam , Pomyliłem się, niewątpliwie przeczytałem tę stronę wiele razy! Słyszałem, że nie dodali jeszcze motywu M.D. w "Dialogu". (Teraz, kiedy o tym myślę, czy to się jeszcze liczy dla tematów dialogowych, które różnią się od obiektu 'Dialog'?) – KickingLettuce

+0

' Theme.AppCompat.Light.Dialog' zdecydowanie rozszerza 'android: Theme.Material.Light.Dialog' . Jakiego kodu używasz do tworzenia aktywności w oknie dialogowym? – ianhanniballake

Odpowiedz

6

Uwaga: patrz mój ostatni zmienił dla możliwie najlepszego rozwiązania

Na co warto, ja myślę, że to błąd. Jednak rozwiązaniem, które odkryłem, jest użycie @style/Base.Theme.AppCompat.Light.Dialog.FixedSize. Na podstawie zrzutu ekranu myślę, że to też będzie działać dla Ciebie. Jednak nie testowałem jeszcze kolorowania palety.

Z tego, co mogę powiedzieć w moich testach, to rozszerza szare obramowanie, jednocześnie umożliwiając korzystanie z AppCompat i v21.

Edycja: jednym efektem ubocznym jest teraz, że wszystkie czynności w oknie dialogowym są tej samej wielkości, co może nie działać dla ciebie. Ponadto, nie zorientowali się, jak usunąć tytuł - requestWindowFeature i supportRequestWindowFeature z Window.FEATURE_NO_TITLE wydaje się być przyczyną

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

chociaż próbowałem przed i po super.onCreate i na pewno przed setContentView

Edycja nr 2: Usuwanie tytułu za pomocą kodu XML działa, a ponieważ nie masz tytułu, nie ma w nim dziwacznego, szarego pola, o które trzeba się martwić, co oznacza, że ​​możesz zrzucić ustawienie FixedSize, a okno dialogowe zapakuje jego treść tak, jak w wcześniejsze wersje.

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

Edit # 3: Można też po prostu usunąć szarym tle - To może być najlepszym rozwiązaniem, ponieważ nie wymaga podstawy. Przedrostek:

<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> 
Powiązane problemy