Dialog 인터페이스 콜백 연습

3559 단어
주 방법 중 호출만 가능
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 ;

인터페이스 생성
    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();

Window Manager는 주로 창의 상태, 속성을 관리하는 데 사용됩니다.
            WindowManager wm = ((Activity)context).getWindowManager();

현재 대화상자의 매개 변수 값 설정과 현재 창의 일부 속성을 가져옵니다
   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

촉발 주법 중의 방법
            switch (v.getId()) {
            case R.id.btn_confirm:
                listener.confirm();
                dismiss();      
                break;
            case R.id.btn_cancel:
                listener.cancel();
                dismiss();
                break;
            }
        }
     }

좋은 웹페이지 즐겨찾기