public ShelfSwitchDialog(Context context) {
super(context,android.R.style.Theme_NoTitleBar);
setContentView(R.layout.newspaper_switch_dialog);
this.context = context;
Window win = getWindow();
win.getAttributes().gravity = Gravity.TOP;
win.setBackgroundDrawableResource(R.drawable.newspaper_blank);
//大小
win.setLayout(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
}
dialog的定制 :
public class ShelfSwitchDialog extends Dialog implements OnClickListener{
Context context;
ImageView yingyong,shudian,baojia;
int selectIndex;
String[] choiceItems = new String[]{"图书","报架"};
public ShelfSwitchDialog(Context context,int paddingLeft){
this(context);
View v = findViewById(R.id.dialog_root_layout);
v.setPadding(paddingLeft-50,50,v.getPaddingRight(),v.getPaddingBottom());
yingyong = (ImageView)findViewById(R.id.yingyong);
yingyong.setOnClickListener(this);
shudian = (ImageView)findViewById(R.id.shudian);
shudian.setOnClickListener(this);
baojia = (ImageView)findViewById(R.id.baojia);
baojia.setOnClickListener(this);
}
public ShelfSwitchDialog(Context context) {
super(context,android.R.style.Theme_NoTitleBar);
setContentView(R.layout.newspaper_switch_dialog);
this.context = context;
Window win = getWindow();
win.getAttributes().gravity = Gravity.TOP;
win.setBackgroundDrawableResource(R.drawable.newspaper_blank);
//大小
win.setLayout(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
}
public AlertDialog create(){
if(context==null){return null;}
final boolean instOfStore = context instanceof ShelfActivity||context instanceof BooksListActivity;
final boolean instOfShelf = context instanceof NewspaperShelf;
final Intent shelfIntent = new Intent(context,NewspaperShelf.class);
final Intent storeIntent = new Intent(context,ShelfActivity.class);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
AlertDialog dialog = builder
.setIcon(R.drawable.newspaper_ic_switch)
.setTitle("切换到:")
.setSingleChoiceItems(choiceItems, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
selectIndex = whichButton;
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Log.v("","whichButton:"+selectIndex);
if(instOfStore){
switch(selectIndex){
case 0:
Toast.makeText(context,"当前已是书店",Toast.LENGTH_SHORT).show();
break;
case 1:
context.startActivity(shelfIntent);
break;
}
}
else if(instOfShelf){
switch(selectIndex){
case 0:
((ShelfActivity)context).finish();
break;
case 1:
Toast.makeText(context,"当前已是报架",Toast.LENGTH_SHORT).show();
break;
}
}
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.create();
dialog.getWindow().getAttributes().gravity = Gravity.TOP;
dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
return dialog;
}
@Override
public void onClick(View v) {
final boolean instOfShelf = context instanceof ShelfActivity;
final boolean instOfNewspaperShelf = context instanceof NewspaperShelf;
final boolean instOfStoreActivity = context instanceof StoreActivity;
final boolean instOfBooksListActivity = context instanceof BooksListActivity;
final Intent newspaperShelfIntent = new Intent(context,NewspaperShelf.class);
final Intent shelfIntent = new Intent(context,ShelfActivity.class);
switch(v.getId()){
case R.id.yingyong:
Intent intent = new Intent("cn.chutong.ereader.finishactivity");
dismiss();
context.sendBroadcast(intent);
break;
case R.id.shudian:
if(instOfNewspaperShelf){
((NewspaperShelf)context).finish();
dismiss();
}
else if(instOfShelf||instOfBooksListActivity){
Toast.makeText(context,"当前已是书店",Toast.LENGTH_SHORT).show();
dismiss();
}
else if(instOfStoreActivity){
dismiss();
((StoreActivity)context).finish();
context.startActivity(shelfIntent);
}
break;
case R.id.baojia:
if(instOfNewspaperShelf){
Toast.makeText(context,"当前已是报架",Toast.LENGTH_SHORT).show();
dismiss();
}
else if(instOfShelf||instOfBooksListActivity){
context.startActivity(newspaperShelfIntent);
dismiss();
}
else if(instOfStoreActivity){
context.startActivity(newspaperShelfIntent);
dismiss();
((StoreActivity)context).finish();
}
break;
}
}
}
效果图:
第二种情况:
addCustomDlg = new Dialog(this, R.style.dialog);
addCustomDlg.setContentView(R.layout.add);
addCustomDlg.show();
confirmBtn = (Button) addCustomDlg.findViewById(R.id.confirmBtn);
edit = (EditText) addCustomDlg.findViewById(R.id.txt);
edit.setText("");
btn_back = (ImageButton) addCustomDlg.findViewById(R.id.btn_back);
btn_back.setOnClickListener(this);
confirmBtn.setOnClickListener(this);
直接从dialog中获取控件,并绑定事件
效果:

