When I creat a Dialog with follow styles:
<style name="Transparent">
<item name="android:windowBackground">#drawable/transparent_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">#+android:style/Animation.Translucent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFullscreen">true</item>
</style>
I found that windowFullscreen item could not work!!
How can I creat a floating Dialog with fullscreen just like this:
http://i.stack.imgur.com/5Zshd.jpg
Related
I have created a transparent AppCompatActivity that is a type of 'launcher' activity for other activities. This launcher activity uses a transparent style as found with other stackoverflow questions.
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">#android:color/transparent</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#color/primary</item>
</style>
Sometimes this launcher activity needs to show a progress dialog. However, the progress dialog does not show up when I use the tag android:windowIsTranslucent. Commenting out this tag allows the progress dialog to appear, but the activity is no longer transparent.
Is there some sort of alternative solution for this?
I didn't tried this solution, But i think this could work.
Just add <item name="android:windowIsTranslucent">false</item> in your AppCompatAlertDialogStyle
Solution would be like
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">#android:color/transparent</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#color/primary</item>
<item name="android:windowIsTranslucent">false</item>
</style>
How do you set DialogFragment.STYLE_NO_FRAME, which hides the frame, in your styles.xml file? Or does this have to be done outside of the xml file?
Have a look at this link.
Put STYLE_NO_FRAME in styles.xml
<style name="DialogWindowAnim">
<item name="android:windowFrame">#null</item>
<item name="android:windowBackground">#android:color/transparent</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowEnterAnimation">#anim/slide_up_from_bottom</item>
<item name="android:windowExitAnimation">#anim/slide_down_to_bottom</item>
</style>
<style name="DialogSlideAnim" parent="DialogWindowAnim">
<item name="android:windowAnimationStyle">#style/DialogWindowAnim</item>
</style>
This is how I did it.
In my application I use holoeverywhere. I would like to change the appearance of AlertDialog and I got stuck on buttons below alert dialog. I took a look how things were done in holoeverywhere and I tried to modify that.
Here is backtracking of my reasoning:
In theme there are atributes which define alertDialogTheme and some other stuff. We will come back later to selectableItemBackground also.
<style name="Holo.Base.Theme" parent="Theme.AppCompat">
...
<item name="alertDialogTheme">#style/Holo.Theme.Dialog.Alert</item>
...
<item name="buttonBarButtonStyle">?borderlessButtonStyle</item>
...
<item name="selectableItemBackground">#drawable/item_background_holo_dark</item> *
...
</sytle>
So i figure alertDialogStyle is my target which is further defined in styles:
<style name="Holo.Base.Theme.Dialog" parent="Holo.Theme">
<item name="android:colorBackgroundCacheHint">#null</item>
<item name="android:windowAnimationStyle">#style/Holo.Animation.Dialog</item>
<item name="android:windowBackground">#drawable/dialog_full_holo_dark</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowFrame">#null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowTitleStyle">#style/Holo.DialogWindowTitle</item>
<item name="borderlessButtonStyle">#style/Holo.Button.Borderless.Small</item>
<item name="buttonBarStyle">#style/Holo.ButtonBar.AlertDialog</item>
<item name="listPreferredItemPaddingLeft">16dip</item>
<item name="listPreferredItemPaddingRight">16dip</item>
<item name="windowActionBar">false</item>
<item name="windowActionModeOverlay">true</item>
<item name="windowAnimationStyle">#style/Holo.Animation.Dialog</item>
<item name="windowContentOverlay">#null</item>
<item name="windowMinWidthMajor">#dimen/dialog_min_width_major</item>
<item name="windowMinWidthMinor">#dimen/dialog_min_width_minor</item>
<item name="windowNoTitle">true</item>
</style>
<style name="Holo.Theme.Dialog" parent="Holo.Base.Theme.Dialog" >
</style>
<style name="Holo.Theme.Dialog.Alert" parent="Holo.Theme.Dialog">
<item name="alertDialogStyle">#style/Holo.AlertDialog</item>
<item name="alertDialogTitleDividerColor">#color/holo_blue_light</item>
<item name="android:windowBackground">#android:color/transparent</item>
</style>
<style name="Holo.Button.Borderless" parent="Holo.Button">
<item name="android:background">?selectableItemBackground</item>
<item name="android:paddingLeft">4dip</item>
<item name="android:paddingRight">4dip</item>
</style>
So Holo.Theme.Dialog.Alert is inherited from Holo:base.Theme.Dialog which has an atribute for borderlessButtonStyle, which I guess defines the buttons of alert dialog.
Style Holo.Button.Borderless referes the atribute selectableItemBackground for its background. Atribute is set in application theme itself. So, my reasoning is if I inherit from theme Holo.theme and set selectableBackground atribut my change should reflect in customized alert dialog buttons and everything else where this background is used.
<style name="ThemeCustom" parent="#style/Holo.Theme>
…
<item name="selectableItemBackground">#drawable/custom_item_background </item>
…
</style>
But this does not work. No change is visible in alert dialog buttons. Is there something wrong with my reasoning?
I want to define a new theme in my app, and override the default Holo AlertDialog style. But there's no way I can change the background or layout of my dialogs.
I followed partly the advice of this blog post.
These are the themes:
<style name="CD1.Theme" parent="android:style/Theme.Holo">
<!-- AlertDialog attributes -->
<item name="android:alertDialogTheme">#style/CD1.Theme.Dialog.Alert</item>
<item name="android:alertDialogStyle">#style/CD1.AlertDialog</item>
<item name="android:alertDialogCenterButtons">false</item>
<item name="android:alertDialogIcon">#drawable/cd1_ic_dialog_alert_holo</item>
</style>
<style name="CD1.Theme.Dialog.Alert" parent="android:style/Theme.Holo.Dialog.Alert">
<item name="android:windowBackground">#android:color/transparent</item>
<item name="android:windowTitleStyle">#style/CD1.DialogWindowTitle</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">#android:style/Animation.Dialog</item>
<item name="android:windowMinWidthMajor">#android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">#android:dimen/dialog_min_width_minor</item>
</style>
These are the styles:
<style name="CD1.AlertDialog" parent="android:style/AlertDialog.Holo">
<item name="android:fullDark">#drawable/cd1_dialog_full_holo</item>
<item name="android:topDark">#drawable/cd1_dialog_top_holo</item>
<item name="android:centerDark">#drawable/cd1_dialog_middle_holo</item>
<item name="android:bottomDark">#drawable/cd1_dialog_bottom_holo</item>
<item name="android:fullBright">#drawable/cd1_dialog_full_holo</item>
<item name="android:topBright">#drawable/cd1_dialog_top_holo</item>
<item name="android:centerBright">#drawable/cd1_dialog_middle_holo</item>
<item name="android:bottomBright">#drawable/cd1_dialog_bottom_holo</item>
<item name="android:bottomMedium">#drawable/cd1_dialog_bottom_holo</item>
<item name="android:centerMedium">#drawable/cd1_dialog_middle_holo</item>
<item name="android:layout">#layout/cd1_alert_dialog</item>
</style>
<style name="CD1.DialogWindowTitle" parent="android:style/DialogWindowTitle.Holo">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">#android:style/TextAppearance.Holo.DialogWindowTitle</item>
<item name="android:gravity">center</item>
</style>
It doesn't work. The default Holo layout is still displayed. What should I do?
Thanks.
Move <item name="android:alertDialogStyle">#style/CD1.AlertDialog</item> from CD1.Theme to CD1.Theme.Dialog.Alert:
<style name="CD1.Theme" parent="android:style/Theme.Holo">
<!-- AlertDialog attributes -->
<item name="android:alertDialogTheme">#style/CD1.Theme.Dialog.Alert</item>
<item name="android:alertDialogCenterButtons">false</item>
<item name="android:alertDialogIcon">#drawable/cd1_ic_dialog_alert_holo</item>
</style>
<style name="CD1.Theme.Dialog.Alert" parent="android:style/Theme.Holo.Dialog.Alert">
<item name="android:alertDialogStyle">#style/CD1.AlertDialog</item>
<item name="android:windowBackground">#android:color/transparent</item>
<item name="android:windowTitleStyle">#style/CD1.DialogWindowTitle</item>
<item name="android:windowContentOverlay">#null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowAnimationStyle">#android:style/Animation.Dialog</item>
<item name="android:windowMinWidthMajor">#android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">#android:dimen/dialog_min_width_minor</item>
</style>
By the way:
android:layout attribute requires API 11.
If you are developing against SDK which is below 11 your can consider this project:
https://github.com/fengdai/AlertDialogPro
I have created a custom progress dialog drawables.
<style name="MyTheme" parent="#android:style/Theme.Dialog">
<item name="android:alertDialogStyle">#style/CustomAlertDialogStyle</item>
<item name="android:textColorPrimary">#ABCDEF</item>
<item name="android:textColor"> #color/heading</item>
<item name="android:background">#00000000</item>
<item name="android:windowFrame">#null</item>
</style>
<style name="CustomAlertDialogStyle">
<item name="android:background">#00000000</item>
<item name="android:windowFrame">#null</item>
<item name="android:bottomBright">#color/grey</item>
<item name="android:bottomDark">#color/grey</item>
<item name="android:bottomMedium">#color/grey</item>
<item name="android:centerBright">#color/grey</item>
<item name="android:centerDark">#color/grey</item>
<item name="android:centerMedium">#color/grey</item>
<item name="android:fullBright">#color/grey</item>
<item name="android:fullDark">#color/grey</item>
<item name="android:topBright">#color/grey</item>
<item name="android:topDark">#color/grey</item>
</style>
Everything is working fine, its showing the things as it should. But dialog is showing borders. I want to remove those borders [screen shot attached].
use dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
You need to add the following to your CustomAlertDialogStyle too:
<item name="android:windowBackground">#android:color/transparent</item>