android 사용자 정의 AlertDialog 대화 상자

5477 단어 androidAlertDialog
앞의 글https://www.jb51.net/article/103036.htm은 alertDialog 의 네 가지 간단 한 사용 을 소개 했다.그러나 어떤 때 는 전체 app 의 스타일 을 통일 시 키 거나 앞의 네 가지 형식 이 프로젝트 의 수요 에 부합 되 지 않 기 위해 서 는 alertDialog 를 사용자 정의 해 야 한다.직접 코드
CustomAlertDialog:

import android.app.Dialog; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
 
/** 
 * Created by yk on 2017/1/17. 
 */ 
 
public class CustomAlertDialog extends Dialog implements View.OnClickListener { 
 
 
 
 public interface OnDialogButtonClickListener { 
  /** 
   *           
   * 
   * @param requestCode 
   * @param isPositive 
   */ 
  void onDialogButtonClick(int requestCode, boolean isPositive); 
 } 
 
 private Context context; 
 private String title; 
 private String message; 
 private String strPositive; 
 private String strNegative; 
 private int requestCode; 
 private OnDialogButtonClickListener listener; 
 
 public CustomAlertDialog(Context context, String title, String message, int requestCode, 
        OnDialogButtonClickListener listener) { 
  super(context, R.style.MyDialog); 
  this.context=context; 
  this.title=title; 
  this.message=message; 
  this.requestCode=requestCode; 
  this.listener=listener; 
 
 } 
 
 private TextView tvTitle; 
 private TextView tvMessage; 
 private Button btnPositive; 
 private Button btnNegative; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.alert_dialog); 
//  setCancelable(false);//                     
//  setCanceledOnTouchOutside(false);//               ,        (          ) 
 
  tvTitle = (TextView) findViewById(R.id.tvAlertDialogTitle); 
  tvMessage = (TextView) findViewById(R.id.tvAlertDialogMessage); 
  btnPositive = (Button) findViewById(R.id.btnAlertDialogPositive); 
  btnNegative = (Button) findViewById(R.id.btnAlertDialogNegative); 
 
  tvTitle.setText(title); 
  tvMessage.setText(message); 
 
  btnPositive.setOnClickListener(this); 
  btnNegative.setOnClickListener(this); 
 } 
 
 @Override 
 public void onClick(View view) { 
  switch (view.getId()){ 
   case R.id.btnAlertDialogPositive: 
    //     
    listener.onDialogButtonClick(requestCode,true); 
    break; 
   case R.id.btnAlertDialogNegative: 
    //     
    listener.onDialogButtonClick(requestCode,false); 
    break; 
  } 
  dismiss(); 
 } 
} 
 MainActivity:

package com.example.yk.dialogtest; 
 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.Toast; 
 
public class CustomDialogActivity extends AppCompatActivity implements CustomAlertDialog.OnDialogButtonClickListener { 
 
 private static final int REQUEST_CODE_FIRST = 1; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_custom_dialog); 
  CustomAlertDialog alertDialog=new CustomAlertDialog(this,"title","message",REQUEST_CODE_FIRST,this); 
  alertDialog.show(); 
 
 } 
 
 @Override 
 public void onDialogButtonClick(int requestCode, boolean isPositive) { 
  if(requestCode==REQUEST_CODE_FIRST && isPositive){ 
   Toast.makeText(this, "     ", Toast.LENGTH_SHORT).show(); 
  } else if (requestCode==REQUEST_CODE_FIRST && !isPositive) { 
   Toast.makeText(this, "     ", Toast.LENGTH_SHORT).show(); 
  } 
 } 
} 
실 현 된 효과:

"확인"과"취소"단추 에 표 시 된 글 자 를 사용자 정의 해 야 한다 면 다음 과 같은 구조 방법 을 다시 쓸 수 있 습 니 다.

public AlertDialog(Context context, String title, String message,String strPositive, String strNegative, int requestCode, OnDialogButtonClickListener listener) { 
  super(context, R.style.MyDialog); 
 
  this.context = context; 
  this.title = title; 
  this.message = message; 
  this.strPositive = strPositive; 
  this.strNegative = strNegative; 
  this.requestCode = requestCode; 
  this.listener = listener;  
 } 

if(!TextUtils.isEmpty(strPositive)){ 
   btnPositive.setText(strPositive); 
  } 
  if(!TextUtils.isEmpty(strNegative)){ 
   btnNegative.setText(strNegative); 
  } 
실 현 된 효과:

원본 코드(이전 글 에서 네 가지 간단 한 alertDialog 사용 포함):http://xiazai.jb51.net/201701/yuanma/androidAlertDialog(jb51.net).rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기