关于自定义dialog的样式

先上图:




前面三种均为系统dialog

前两种使用了自定义样式,第三种完全不使用样式

后面两种为自定义布局,使用了自定义样式

运行环境为安卓5.0


其中,第三种虽然没有指定样式,但是系统会根据当前系统版本去设置样式,比如图中用的就是5.0的样式,但是在4.1的机器上运行的时候效果跟第二种是一样的


如果想在任何环境都实现5.0版本的样式,可以使用自定义布局的方式去实现,虽然稍微麻烦些


自定义样式的主要修改部分






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);
    }
}

用到的自定义样式



    







你可能感兴趣的:(关于自定义dialog的样式)