sno*_*gon 25 android android-appcompat android-support-library material-design
我正在使用AppCompat编写一个材质设计风格的应用程序.由于AppCompat不会影响对话框,因此我将对对话框进行外观设置:
styles.xml:
<style name="AppTheme.Base" parent="Theme.AppCompat">
<!-- Set AppCompat’s color theming attrs -->
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/green_darker</item>
<item name="colorAccent">@color/accent</item>
<item name="android:alertDialogTheme">@style/alertDialog</item>
<item name="android:dialogTheme">@style/alertDialog</item>
</style>
<style name="alertDialog" parent="Theme.AppCompat.Dialog">
<item name="colorPrimary">@color/green</item>
<item name="colorPrimaryDark">@color/green_darker</item>
<item name="colorAccent">@color/accent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我在android api> = 21时得到了我想要的东西,但在其他设备上我最终在对话框周围有一个"框".
有没有办法摆脱对话框周围的"盒子",甚至在api <21上应用颜色和材质主题,最好没有任何额外的依赖?
App <Api <21:

API> = 21上的应用:

Gab*_*tti 33
使用新的,AppCompat v22.1您可以使用新的 android.support.v7.app.AlertDialog或新的AppCompatDialog
只需使用这样的代码(当然,在您的情况下,您必须使用自定义布局来获得进度条)
import android.support.v7.app.AlertDialog
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle);
builder.setTitle("Dialog");
builder.setMessage("Lorem ipsum dolor ....");
builder.setPositiveButton("OK", null);
builder.setNegativeButton("Cancel", null);
builder.show();
Run Code Online (Sandbox Code Playgroud)
并使用这样的风格:
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">#FFCC00</item>
<item name="android:textColorPrimary">#FFFFFF</item>
<item name="android:background">#5fa3d0</item>
</style>
Run Code Online (Sandbox Code Playgroud)
Ale*_*nin 10
如果有人仍在寻找简单有效的解决方案,只需将此行添加到"alertDialog"样式:
<item name="android:windowBackground">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)
PS更改此属性也会影响API> = 21上的PreferenceFragment对话框,因此请确保使用不同的样式:API <21的透明bg,API没有任何更改> = 21
当我为所有AlertDialogs使用android.support.v7.app.AlertDialog时,我遇到了与新AppCompat 22库完全相同的问题,但额外的背景图层仅影响了ProgressDialogs.
使用我的自定义主题设置样式时,我的所有AlertDialog看起来都很棒,但是ProgressDialog在背景中有如背景所述的奇怪叠加.
我有一个选项是每次构建ProgressBar时设置一个特定的样式,但我一直在寻找一个应用程序范围的解决方案.
在这两个链接的帮助下:
如何设置类似Pro和Joerg Richter Blog的AlertDialogs我能够摆脱<21 ProgressDialogs上绘制的额外图层.
我发现的问题是,在所有版本中,ProgressBar根据默认情况下在"android:alertDialogStyle"中定义的内容绘制其背景.
因此,为了摆脱额外的层,我必须定义自己的样式并将它们设置为"android:alertDialogStyle".这样做,我也覆盖了应用于ProgressDialogs的默认布局.
这是我的themes.xml:
<item name="android:alertDialogTheme">@style/MyAlertDialogTheme</item>
<item name="alertDialogTheme">@style/MyAlertDialogTheme</item>
<item name="android:alertDialogStyle">@style/MyAlertDialogStyles</item>
Run Code Online (Sandbox Code Playgroud)
我的styles.xml:
<style name="MyAlertDialogTheme">
<item name="android:windowIsFloating">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</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>
<item name="android:background">@color/theme_alert_dialog_background</item>
<item name="colorAccent">@color/theme_accent_1</item>
</style>
<style name="AlertDialog">
<item name="android:fullDark">@android:color/transparent</item>
<item name="android:topDark">@android:color/transparent</item>
<item name="android:centerDark">@android:color/transparent</item>
<item name="android:bottomDark">@android:color/transparent</item>
<item name="android:fullBright">@android:color/transparent</item>
<item name="android:topBright">@android:color/transparent</item>
<item name="android:centerBright">@android:color/transparent</item>
<item name="android:bottomBright">@android:color/transparent</item>
<item name="android:bottomMedium">@android:color/transparent</item>
<item name="android:centerMedium">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
小智 6
ProgressDialog - 尝试下面的android 5
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)
要么
dialog.getWindow().clearFlags(LayoutParams.FLAG_DIM_BEHIND);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12558 次 |
| 最近记录: |