单个Dialog 自定义布局 ,这个只能算半自定义,就是一个弹框布局插入到AlertDialog 中 使用setView 即可

代码如下

AlertDialog.Builder builder = new AlertDialog.Builder(InflateActivity.this);                View view = getLayoutInflater().inflate(R.layout.bottom__pop_item, null);                builder.setView(view);                final AlertDialog dialog = builder.create();                dialog.show();                TextView textView = view.findViewById(R.id.photo);                textView.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        dialog.dismiss();                        Toast.makeText(InflateActivity.this, "点击了", Toast.LENGTH_SHORT).show();                    }                });            }

监听事件也添加了, 布局更具自己的需求添加即可 。。。。。。。。。

假如是写一个 android 中间弹框,使用上面的代码完全没有问题。。

自定义弹框 

1 先创建一个Dialog 类

public class CommDialog extends Dialog implements View.OnClickListener {    private Context context;//上下文    private int layoutResID;//布局文件id    private int[] listenedItem;//监听的控件id    public CommDialog(Context context, int layoutResID, int[] listenedItem) {        super(context);        this.context = context;        this.layoutResID = layoutResID;        this.listenedItem = listenedItem;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        Window dialogWindow = getWindow();        dialogWindow.setGravity(Gravity.CENTER);        setContentView(layoutResID);        WindowManager windowManager = ((Activity) context).getWindowManager();        Display display = windowManager.getDefaultDisplay();        WindowManager.LayoutParams lp = getWindow().getAttributes();        lp.width = display.getWidth() * 4 / 5;// 设置dialog宽度为屏幕的4/5        getWindow().setAttributes(lp);        setCanceledOnTouchOutside(true);//点击外部Dialog消失        //遍历控件id添加点击注册        for (int id : listenedItem){            findViewById(id).setOnClickListener(this);        }    }    OnClickListener listener;    public void setClickListener(OnClickListener listener) {        this.listener = listener;    }    public interface OnClickListener {        void OnItemClick(CommDialog dialog, View view);    }    @Override    public void onClick(View v) {        dismiss();        listener.OnItemClick(this,v);    }}

然后在Activity 中使用这个CommDialog的方法

public class InflateActivity extends AppCompatActivity {    private TextView textView;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.inflate_activity_layout);        textView = findViewById(R.id.txt);        textView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                CommDialog dialog = new CommDialog(InflateActivity.this, R.layout.bottom__pop_item, new int[]{R.id.photo, R.id.camera, R.id.cancel});                dialog.setClickListener(new CommDialog.OnClickListener() {                    @Override                    public void OnItemClick(CommDialog dialog, View view) {                        switch (view.getId()) {                            case R.id.photo:                                Toast.makeText(InflateActivity.this, "11111", Toast.LENGTH_SHORT).show();                                break;                            case R.id.camera:                                Toast.makeText(InflateActivity.this, "22222", Toast.LENGTH_SHORT).show();                                break;                            case R.id.cancel:                                Toast.makeText(InflateActivity.this, "33333", Toast.LENGTH_SHORT).show();                                break;                        }                    }                });                dialog.show();            }        });    }}

自定义呢就是 样式就自己随意写了, 需要注意的就是id的次数 使用几次,记得写几次呢。。。。。。。。

这里自定义Dialog 就结束了,。。。

下篇文章将介绍android 分屏播放知识。。

更多相关文章

  1. Android(安卓)Notification基础知识
  2. Android一行代码 搞定图片太多,太大OOM(内存溢出)
  3. Android开发:定制Activity的标题栏(Titlebar)
  4. setTheme问题2
  5. Android加载网络图片
  6. Android(安卓)Studio 配置多个代码仓库(maven)
  7. android -------- ConstraintLayout 宽高比和偏移量比(三)
  8. android设置wallpaper
  9. 读取SIM卡信息

随机推荐

  1. 三十
  2. Nacos-Sync介绍及部署
  3. 桥接模式在开源代码中的应用
  4. 最新JGJ311-2013Word版建筑深基坑工程施
  5. 项目中如何实现读写分离?怎么配置?
  6. 期待周末,补个觉、撸篇文
  7. AQS简简单单过一遍
  8. 一览 JDK 并发包(J.U.C)
  9. JDK 1.8 中的日期与时间 API 一览
  10. Mybatis001-第一个Mybatis程序