自定义dialog,有时候想显示的内容比较个性,这时候可以自己写布局文件,然后set到dialog中来,代码参考。
View myview = LayoutInflater.from(context).inflate(R.layout.alert_dialog_cached_delete_folder, null);
dialog = new Dialog(context,R.style.delete_dialog);
dialog.setContentView(myview);
dialog.setCanceledOnTouchOutside(true);
cancelTxt = (TextView)myview.findViewById(R.id.folder_cancel);
okTxt = (TextView)myview.findViewById(R.id.folder_ok);
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View arg0) {
if(R.id.folder_cancel == arg0.getId()){
dialog.dismiss();
}
else{
dialog.dismiss();
final int nCount = listForDele.size();
for(int i = 0 ; i<nCount;i++){
// 任务删除
DownloadManage.getInstance().deleteDownload(listForDele.get(0).sid);
// 数据库删除
StorageHelper.getInstance().deleDownloadRecordBySid_Complete(listForDele.get(i).sid);
}
new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0 ; i<nCount;i++){
// 文件删除
BitmapHolder.getInstance().deleFolderBySid(context, listForDele.get(i).sid);
}
}
}).start();
// 文件夹表删除
DBHelper.getInstance(context).deleteDownload_FolderPid(listForDele.get(0).pid);
// UI删除
recordList.remove(position);
// 更新UI
update(recordList);
}
}
};
cancelTxt.setOnClickListener(listener);
okTxt.setOnClickListener(listener);
dialog.show();
有时候,设置dialog的大小比较麻烦,可以参考:
// android.view.WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
// lp.width = 555;
// lp.height =400;
// dialog.getWindow().setAttributes(lp);
但,最好还是在布局文件中,少用点wrap_content,该为实际的大小,如300dp,那么框自然就撑起来了。
布局文件参考:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@drawable/cached_dialog_round_corner"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#494949"
android:textSize="20sp"
android:text="@string/alert_dialog_cached_delete"/>
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="99dp"
android:gravity="center">
<TextView
android:layout_width="300dp"
android:layout_height="wrap_content"
android:textColor="#494949"
android:textSize="20sp"
android:gravity="center"
android:text="@string/alert_dialog_cached_delefolder"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_weight="1"
android:id="@+id/folder_cancel"
android:text="@string/alert_dialog_cached_cancel"
android:background="@drawable/cached_dialog_cancel"
android:clickable="true"
android:textColor="#494949"
android:textSize="20sp"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_weight="1"
android:clickable="true"
android:id="@+id/folder_ok"
android:background="@drawable/cached_dialog_ok"
android:text="@string/alert_dialog_cached_ok"
android:textColor="#494949"
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
最好不要强制设置大小,否则可能不兼容。