非常简洁的自定义dialog实现方式(带源码)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011835956/article/details/25302019


此类中的方法, 都是可以自己定义的,需要什么功能就自己写方法来实现


/**
 * 自定义dialog
 * @author Administrator
 *
 */
public class CustomDialog{
	private TextView title;
	private TextView detial;
	private Button cancel;
	private Button ensure;
	private Dialog mDialog;
	private LayoutInflater mInflater;
	public CustomDialog(Context context) {
		mDialog = new Dialog(context,R.style.customDialog);		//一个无title样式
		mInflater = LayoutInflater.from(context);
		
		View dialogView = mInflater.inflate(R.layout.custom_dialog, null);	//引入自定义的布局文件

		Window window = mDialog.getWindow();
		window.setContentView(dialogView);
		
		findView(window);
	}

	private void findView(Window window) {
		title = (TextView)window.findViewById(R.id.custom_dialog_title);
		detial = (TextView)window.findViewById(R.id.custom_dialog_detial);
		cancel = (Button)window.findViewById(R.id.custom_dialog_cancel);
		ensure = (Button)window.findViewById(R.id.custom_dialog_ensure);
	}
	/**
	 * 左边按钮点击事件
	 * @param listener
	 */
	public void setLeftOnClick(View.OnClickListener listener){
		cancel.setOnClickListener(listener);
	}
	/**
	 * 右边按钮点击事件
	 * @param listener
	 */
	public void setRightOnClick(View.OnClickListener listener){
		ensure.setOnClickListener(listener);
	}
	/**
	 * 设置标题
	 * @param title
	 */
	public void setTitle(String title){
		this.title.setText(title);
	}
	/**
	 * 设置详情
	 * @param detial
	 */
	public void setDetial(String detial){
		this.detial.setText(detial);
	}
	/**
	 * 设置左边按钮背景
	 * @param cancelBg
	 */
	public void setCancelBg(int cancelBg){
		cancel.setBackgroundResource(cancelBg);
	}
	/**
	 * 设置右边按钮背景
	 * @param cancelBg
	 */
	public void setEnsureBg(int ensureBg){
		ensure.setBackgroundResource(ensureBg);
	}
	/**
	 * 设置隐藏左边按钮背景
	 * @param cancelBg
	 */
	public void setLeftVisible(int ensureBg){
		cancel.setVisibility(View.GONE);
	}
	
	public void show(){
		mDialog.show();
	}
	
	public void dismiss(){
		mDialog.dismiss();
	}
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/custom_dialog_title"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@drawable/custom_dialog_up_bg"
        android:gravity="center"
        android:text="领取成功"
        android:textColor="@color/black"
        android:textSize="24sp" />

    <TextView
        android:id="@+id/custom_dialog_detial"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@drawable/custom_dialog_down_bg"
        android:gravity="center"
        android:padding="5dp"
        android:text="恭喜,您已成功领取3元奖金,快去无线苏州“我的余额”模块查询"
        android:textColor="@color/lottery_gray_word"
        android:textSize="18sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/custom_dialog_cancel"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/custom_dialog_cancel" />

        <Button
            android:id="@+id/custom_dialog_ensure"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/custom_dialog_ensure" />
    </LinearLayout>

</LinearLayout>

引用方法


mAttend = (Button)findViewById(R.id.button);
		title = (EditText)findViewById(R.id.title);
		mAttend.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View v) {
				final CustomDialog dialog = new CustomDialog(MainActivity.this);
				dialog.setLeftOnClick(new OnClickListener(){

					@Override
					public void onClick(View v) {
						dialog.dismiss();
					}});
				final String sTitle = title.getText().toString();
				if(!"".equals(sTitle)){
					dialog.setTitle(sTitle);
				}
				dialog.show();
			}});

源码下载


猜你喜欢

转载自blog.csdn.net/u011835956/article/details/25302019