您的位置:首页 > 其它

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

2014-05-08 14:13 309 查看


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

/**
* 自定义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();
}});


源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: