在dialog实现中,如果就用系统自带的显示风格已经满足不了大家的需求,那么我们就需要自定义显示的界面,那我们就直接把弹出框看成是一个View的界面(也就是一个布局)我们可以在里面去设计显示内容;下面我们就来看下实现的代码:
下面是在一个Activity中的一个打开Dialog的方法;
方法里面调DialogViewsTypeAsk()时共传了5个参数:
Context context,上下文
boolean showtwo,是否显示两个按钮(及删除和取消)
DialogViews_ask listener,两个按钮回调的接口
String content, 需要显示的内容
String leftBtn, 左按钮显示名称
String rightBtn右按钮名称
private void showDeleteLinkDialog(final TNPGetListRegisterAppOutput tnpBizLink) {
DialogViewsTypeAsk dialog = new DialogViewsTypeAsk(mView.getContext(), true,
new DialogViewsTypeAsk.DialogViews_ask() {
@Override
public void doOk() {
//操作
}
@Override
public void doCancel() {
//操作
}
}, "删除小组成员",“ 删除”,“取消”);
dialog.show();
}
在这里我们的DialogViewsTypeAsk 类继承了Dialog,在里面自定义View来显示你所想要的界面效果,里面用到了DialogViews_ask 接口回调,直接把操作回调到调DialogViewsTypeAsk 的界面去处理;如果你想要设置Dialog的风格你可以通过super(context, R.style.dialog_normal);来设置;
public class DialogViewsTypeAsk extends Dialog {
// 确定
private Button btn_ok;
// 取消
private Button btn_cancle;
public DialogViews_ask mAction_ask;
public interface DialogViews_ask {
void doOk();
void doCancel();
}
public DialogViewsTypeAsk(Context context, boolean showtwo, DialogViews_ask listener,
String content, String leftBtn, String rightBtn) {
super(context, R.style.dialog_normal);
this.context = context;
setContentView(R.layout.dialog_ask);
this.mAction_ask = listener;
TextView tv_message = (TextView)findViewById(R.id.Tv_message_dialgask);
//TextView tv_title = (TextView)findViewById(R.id.Tv_title_dialgask);
tv_message.setVisibility(View.VISIBLE);
tv_title.setVisibility(View.GONE);
tv_message.setText(content);
// 实例化
// 确定
btn_ok = (Button)findViewById(R.id.Btn_okdialog_dialogask);
// 取消
btn_cancle = (Button)findViewById(R.id.Btn_cancledialog_dialogask);
btn_ok.setText(leftBtn);
btn_cancle.setText(rightBtn);
if (!showtwo) {
btn_cancle.setVisibility(View.GONE);
findViewById(R.id.line1).setVisibility(View.GONE);
findViewById(R.id.line2).setVisibility(View.GONE);
}
// 数据填充
setDataAndListener();
}
/**
* 数据填充和添加监听
*/
private void setDataAndListener() {
// 确定
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
close();
if (mAction_ask != null) {
mAction_ask.doOk();
}
}
});
// 取消
btn_cancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
close();
if (mAction_ask != null) {
mAction_ask.doCancel();
}
}
});
}
}
下面是R.layout.dialog_ask的布局
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="20dip"
android:background="@drawable/org_pop_bg"
android:orientation="vertical" >
<!-- 标题 -->
<View
android:layout_width="15dip"
android:layout_height="15dip" />
<TextView
android:id="@+id/Tv_title_dialgask"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:gravity="center_vertical|center_horizontal"
android:minHeight="30dip"
android:textColor="@color/c12"
android:textSize="16sp" />
<TextView
android:id="@+id/Tv_message_dialgask"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dip"
android:layout_marginLeft="15dip"
android:layout_marginRight="15dip"
android:gravity="center_vertical|center_horizontal"
android:text=""
android:textColor="@color/c12"
android:textSize="16sp"
android:visibility="gone" />
<!-- 横线 -->
<View
android:layout_width="fill_parent"
android:layout_height="0.3dip"
android:background="@color/guide_light_gray" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="39dip"
android:orientation="horizontal" >
<!-- 确定 -->
<Button
android:id="@+id/Btn_okdialog_dialogask"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:background="@drawable/dialog_ask_btn_selector"
android:gravity="center"
android:text="@string/finish"
android:textColor="@drawable/org_blue_black_select"
android:textSize="16sp" />
<View
android:id="@+id/line1"
android:layout_width="0.3dip"
android:layout_height="fill_parent"
android:background="@color/guide_light_gray" />
<!-- 取消 -->
<Button
android:id="@+id/Btn_cancledialog_dialogask"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:background="@drawable/dialog_ask_btn_selector"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@drawable/org_blue_black_select"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
效果图如下:
!!!!!不是完整的代码,只为总结,有错的地方还望理解;