自定义Dialog,DatePickerDialog,TimePickerDialog,PopupWindow,Notification

这篇博客介绍了如何自定义Dialog,包括去除默认标题的方法。此外,详细讲解了DatePicker和TimePicker的选择器,包括DatePickerDialog和TimePickerDialog的使用。还探讨了PopupWindow作为Spinner替代品的应用,并展示了如何创建和使用Notification。
摘要由CSDN通过智能技术生成

自定义Dialog

自定义Dialog就是Dialog的整个View都是自己写的,title,message,按键等。
这里先用LayoutInflater将View实例化,然后用dialog.setContentView(dialog_view);将View导入Dialog中。
代码如下:

switch (v.getId()) {
            case R.id.button1:
                final Dialog dialog =new Dialog(MainActivity.this,R.style.NoDialogTitle);
                LayoutInflater inflater=getLayoutInflater();
                View dialog_view=inflater.inflate(R.layout.dialog_view,null);
                TextView title= (TextView) dialog_view.findViewById(R.id.title);
                TextView message= (TextView) dialog_view.findViewById(R.id.message);
                Button cancel = (Button) dialog_view.findViewById(R.id.cancel);
                Button ok = (Button) dialog_view.findViewById(R.id.ok);
                title.setText("我是标题");
                message.setText("我是内容");
                dialog.setContentView(dialog_view);
                cancel.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        dialog.dismiss();
                    }
                });
                ok.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(),"您确认了",Toast.LENGTH_LONG).show();
                        dialog.dismiss();
                    }
                });
                dialog.show();

设置Diolog的大小的方法:

 public static void setDialogWidthAndHeight(Context context, Dialog dialog, double widtRate, double heightRate) {
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = windowManager.getDefaultDisplay();
        WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
        lp.width = (int) (display.getWidth() * widtRate); //设置宽度为屏幕的多少
        lp.height = (int) (display.getHeight() * heightRate);//设置高度为屏幕的多少
        dialog.getWindow().setAttributes(lp);
    }

在 Dialog dialog =new Dialog(MainActivity.this,R.style.NoDialogTitle);中用了style,这是用来取消默认的标题的,它在style中的代码为:

 <style parent="@android:Theme.Dialog" name="NoDialogTitle">

        <item name="android:windowFrame">@null</item>

        <item name="android:windowNoTitle">true</item>

        <item name="android:windowBackground">@android:color/transparent</item>

        <item name="android:windowIsFloating">true</item>

        <item name="android:windowContentOverlay">@null</item>

    </style>

这样结果就没有默认的标题了。
结果如下:
这里写图片描述

完整的例子:

public class MyDiolag extends BaseActivity {
   
    private Button mButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.my);
        mButton = (Button) findViewById(R.id.button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final Dialog dialog =new Dialog(MyDiolag.this,R.style.NoDialogTitle);
                LayoutInflater inflater=getLayoutInflater();
                View dialog_view=inflater.inflate(R.layout.dialog_view, null);

                Button cancel = (Button) dialog_view.findViewById(R.id.cancel);
                Button ok = (Button) dialog_view.findViewById(R.id.ok);


                cancel.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        dialog.dismiss();
                    }
                });
                ok.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(getApplicationContext(), "您确认了", Toast.LENGTH_LONG).show();
                        dialog.dismiss();
                   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值