关于自定义dialog的样式
2017-11-07 15:15
232 查看
先上图:
前面三种均为系统dialog
前两种使用了自定义样式,第三种完全不使用样式
后面两种为自定义布局,使用了自定义样式
运行环境为安卓5.0
其中,第三种虽然没有指定样式,但是系统会根据当前系统版本去设置样式,比如图中用的就是5.0的样式,但是在4.1的机器上运行的时候效果跟第二种是一样的
如果想在任何环境都实现5.0版本的样式,可以使用自定义布局的方式去实现,虽然稍微麻烦些
自定义样式的主要修改部分
<style name="dialog" parent="@android:style/Theme.Dialog">
<!--是否半透明-->
<item name="android:windowIsTranslucent">true</item>
<!--设置dialog的背景-->
<item name="android:background">@android:color/transparent</item>
<!--背景颜色及和透明程度-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否去除标题 -->
<item name="android:windowNoTitle">true</item>
<!--是否去除边框-->
<item name="android:windowFrame">@null</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否模糊-->
<item name="android:backgroundDimEnabled">false</item>
<!--如果背景需要模糊,模糊到什么程度,当值为1 时,除了dialog以外的部分全黑-->
<item name="android:backgroundDimAmount">0.7</item>
</style>
demo中的代码:
用到的自定义样式
前面三种均为系统dialog
前两种使用了自定义样式,第三种完全不使用样式
后面两种为自定义布局,使用了自定义样式
运行环境为安卓5.0
其中,第三种虽然没有指定样式,但是系统会根据当前系统版本去设置样式,比如图中用的就是5.0的样式,但是在4.1的机器上运行的时候效果跟第二种是一样的
如果想在任何环境都实现5.0版本的样式,可以使用自定义布局的方式去实现,虽然稍微麻烦些
自定义样式的主要修改部分
<style name="dialog" parent="@android:style/Theme.Dialog">
<!--是否半透明-->
<item name="android:windowIsTranslucent">true</item>
<!--设置dialog的背景-->
<item name="android:background">@android:color/transparent</item>
<!--背景颜色及和透明程度-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否去除标题 -->
<item name="android:windowNoTitle">true</item>
<!--是否去除边框-->
<item name="android:windowFrame">@null</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否模糊-->
<item name="android:backgroundDimEnabled">false</item>
<!--如果背景需要模糊,模糊到什么程度,当值为1 时,除了dialog以外的部分全黑-->
<item name="android:backgroundDimAmount">0.7</item>
</style>
demo中的代码:
public class DialogActivity extends Activity{ @BindView(R.id.button_1) Button button_1; @BindView(R.id.button_2) Button button_2; @BindView(R.id.button_3) Button button_3; @BindView(R.id.button_4) Button button_4; @BindView(R.id.button_5) Button button_5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dialog); ButterKnife.bind(this); } @OnClick({R.id.button_1,R.id.button_2,R.id.button_3,R.id.button_4,R.id.button_5}) void click(View view){ switch (view.getId()){ case R.id.button_1://系统黑 showMyDialog(R.style.dialog_black); break; case R.id.button_2://系统白 showMyDialog(R.style.dialog_white); break; case R.id.button_5://系统白2 AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("测试") .setMessage("测试内容") .setPositiveButton("确定",null) .setNegativeButton("取消",null); builder.create().show(); break; case R.id.button_3://完全自定义 showMydialog2(R.style.dialog_black); break; case R.id.button_4://完全自定义 showMydialog2(R.style.dialog_white); break; default: break; } } void showMyDialog(int style){ AlertDialog.Builder builder=new AlertDialog.Builder(this,style); builder.setTitle("测试") .setMessage("测试内容") .setPositiveButton("确定",null) .setNegativeButton("取消",null); builder.create().show(); } void showMydialog2(int style){ View view= LayoutInflater.from(this).inflate(R.layout.dialog_test,null); AlertDialog.Builder builder=new AlertDialog.Builder(this,style); AlertDialog dialog=builder.create(); dialog.show(); dialog.getWindow().setContentView(view); } }
用到的自定义样式
<style name="dialog_black" parent="android:Theme.Holo.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> </style> <style name="dialog_white" parent="android:Theme.Holo.Light.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> </style>
相关文章推荐
- 自定义Dialog的详细步骤(实现自定义样式一般原理)
- 关于自定义dialog动态设置宽度没有效果问题
- 关于自定义Dialog 中match_parent 属性 失效的问题
- Android自定义dialog实现支付宝支付成功样式
- 关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法
- 自定义dialog,加载数据或网络请求时 dialog+动画(两种样式分享)
- 【转】bootbox自定义dialog、confirm、alert样式,以及基本设置方法setDefaults中可用参数
- bootbox自定义dialog、confirm、alert样式,以及基本设置方法setDefaults中可用参数
- AlertDialog自定义样式问题
- 使用自定义透明Dialog样式的Activity
- Android - dialog自定义弹框样式
- Android自定义Dialog对话框样式出现的边框无法填满问题
- 自定义Dialog(自定义button样式)
- Android 中自定义Dialog样式的Activity点击空白处隐藏软键盘功能(dialog不消失)
- CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题
- 单选样式的自定义dialog
- Android中自定义Dialog样式
- WPF:自定义Metro样式文件夹选择对话框FolderBrowserDialog
- 自定义dialog的样式
- 自定义dialog的布局样式