欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于自定义dialog的样式

程序员文章站 2022-05-16 14:35:33
...

先上图:

关于自定义dialog的样式



前面三种均为系统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