Dialog 接口回調練習

主方法中只是調用

private void showpop(View v ){
        View pv = View.inflate(this,R.layout.popwindow, null);
        TextView tv_photo = (TextView)pv.findViewById(R.id.tv_msg);
        final PopupWindow pop = new PopupWindow(pv, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
        
        pop.setOutsideTouchable(true);
        pop.setBackgroundDrawable(new ColorDrawable(0*00000000));
        
        pop.setFocusable(true);
        tv_photo.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                
                Toast.makeText(MainActivity.this,"拍照",Toast.LENGTH_SHORT).show();
                pop.dismiss();      
                
            }
        });
        
    }

重新寫一個類

    private Context context;
    private String msg ;
    private String btnConfirm ;
    private String btnCancel ;
    private TextView tv_msg ;
    private Button btn_confirm ;
    private Button btn_cancel ;
    
    public MyDialig(Context context,String msg,String btnConfirm,String btnCancel) {

        super(context,R.style.mydialog);
        // TODO Auto-generated constructor stub
        this.context = context;
        this.msg = msg ;
        this.btnCancel = btnCancel;
        this.btnConfirm = btnConfirm;
    }
 
    private MyClickListener listener ;

創(chuàng)建一個接口

    public interface MyClickListener{
        public void confirm() ;
        public void cancel() ;  
    }

給接口賦值

    public void setClickListener    (MyClickListener listener){
        this.listener = listener;

    }      

      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.text1);
            tv_msg = (TextView)findViewById(R.id.tv_msg);
            btn_confirm =(Button)findViewById(R.id.btn_confirm);
            btn_cancel = (Button)findViewById(R.id.btn_cancel);
            
            tv_msg.setText(msg);
            btn_cancel.setText(btnCancel);
            btn_confirm.setText(btnConfirm);
            
            btn_cancel.setOnClickListener(this);
            btn_confirm.setOnClickListener(this);

設置Dialog大小

            Window windows = getWindow();

WindowManager主要用來管理窗口的一些狀態(tài)、屬性

            WindowManager wm = ((Activity)context).getWindowManager();

獲取當前對話框的參數(shù)值
設置和獲得當前窗口的一些屬性

   WindowManager.LayoutParams params =windows.getAttributes(); 

設置窗口顯示的位置

            windows.setGravity(Gravity.CENTER);

獲取屏幕的寬高

            Display display = wm.getDefaultDisplay();

把屏幕的寬度設為0.6

            params.width = (int) (display.getWidth()*0.6);
            windows.setAttributes(params);       
      }
  @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

觸發(fā)主方法中的 方法

            switch (v.getId()) {
            case R.id.btn_confirm:
                listener.confirm();
                dismiss();      
                break;
            case R.id.btn_cancel:
                listener.cancel();
                dismiss();
                break;
            }
        }
     }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容