博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Dialog
阅读量:6901 次
发布时间:2019-06-27

本文共 2279 字,大约阅读时间需要 7 分钟。

AlertDialog.Builder对话框没有类似finish()或者dismiss()这样的方法。

但是它的父类AlertDialog有dismiss方法,而且AlertDialog.Builder在.show()的时候会得到一个AlertDialog对象,我们就可以用dismiss方法将该Builder关闭。

    AlertDialog.Builder builder = new AlertDialog.Builder(this);  

    AlertDialog dialog = builder.show();  

    dialog.dismiss();  

 
Android中的弹出框在被点击时, 无论点击哪个按钮都会关闭窗口。 但是有的情况下我们不需要立即关闭窗口。下面的情况是弹出框中要求用户输入文件名,并在点击确定时检查文件名的合法性, 不合法则提示用户重新输入, 弹出框要保持在界面上使用反射     

    DialogInterface.OnClickListener dialogListener = new DialogInterface.OnClickListener() {

  
  @Override
  public void onClick(DialogInterface dialog, int which) {
   switch (which) {
   case DialogInterface.BUTTON_POSITIVE:
    try { 
        //不关闭
     Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); 
        field.setAccessible(true); 
        field.set(dialog, false); 
        } catch (Exception e) {
         e.printStackTrace();
         } 
    if(inputCheck()){
     //关闭对话框
     try {
      Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
      field.setAccessible(true);
      field.set(dialog, true);
      } catch (Exception e) {
      e.printStackTrace();
      }
     dialog.dismiss();
    }
    break;
   case DialogInterface.BUTTON_NEGATIVE:
    dialog.dismiss();
    break;

   default:

    break;
   }
  }
 };

设置普通按钮不可点击:Button.setEnabled(false);//设置这个属性

 

java代码中设置或更改一个控件的背景图片:

    Resources resources = getContext().getResources();   

  Drawable btnDrawable = resources.getDrawable(R.drawable.layout_bg);  

  layout.setBackgroundDrawable(btnDrawable);   

 

LayoutInflater inflater = this.getLayoutInflater();View view = inflater.inflate(R.layout.test_alertdialog_listview,null);ListView lv = (ListView)view.findViewById(R.id.test_alertdialog_listview);lv.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,datas));lv.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView
parent, View view,int position, long id) {alertdialog.dismiss();Toast.makeText(TestAndroid.this, datas[position], Toast.LENGTH_LONG).show();}});alertdialog = new AlertDialog.Builder(this)// .setView(view);.setItems(datas, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}}).create();// 在此使用setview方法可以设置布局文件和alertdialog四周边框的距离,可以消除黑边框alertdialog.setView(view, 0, 0, 0, 0);alertdialog.show();

转载于:https://www.cnblogs.com/xubuhang/p/4778441.html

你可能感兴趣的文章
企业版打包
查看>>
转载 X5打包服务器
查看>>
[ BZOJ 4668 ] 冷战
查看>>
JavaScript实现jsonp&&CORS
查看>>
Linux下wget方式下载jdk压缩包仅5KB的问题
查看>>
idea使用git管理代码,代码上传至github或者码云
查看>>
html之DOM总结
查看>>
java实现 排序算法(鸡尾酒排序&选择排序&插入排序&二分插入排序)
查看>>
c++ assert
查看>>
VS2017自动添加头部注释
查看>>
游戏动画中欧拉角与万向锁的理解
查看>>
Sorting It All Out(拓扑排序)
查看>>
python oop面向对象笔记
查看>>
python numpy模块使用笔记(更新)
查看>>
vue-cli构建项目 npm run build后应该怎么运行在本地查看效果
查看>>
unix平台下I/O聚集和分离的一种方案
查看>>
1081. Binary Lexicographic Sequence(找规律)
查看>>
Postman笔记 - 入门好文
查看>>
通过游戏来学习编程
查看>>
周记(飞船一号
查看>>