自定义Dialog
自定义Dialog就是Dialog的整个View都是自己写的,title,message,按键等。
这里先用LayoutInflater将View实例化,然后用dialog.setContentView(dialog_view);将View导入Dialog中。
代码如下:
switch (v.getId()) {
case R.id.button1:
final Dialog dialog =new Dialog(MainActivity.this,R.style.NoDialogTitle);
LayoutInflater inflater=getLayoutInflater();
View dialog_view=inflater.inflate(R.layout.dialog_view,null);
TextView title= (TextView) dialog_view.findViewById(R.id.title);
TextView message= (TextView) dialog_view.findViewById(R.id.message);
Button cancel = (Button) dialog_view.findViewById(R.id.cancel);
Button ok = (Button) dialog_view.findViewById(R.id.ok);
title.setText("我是标题");
message.setText("我是内容");
dialog.setContentView(dialog_view);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"您确认了",Toast.LENGTH_LONG).show();
dialog.dismiss();
}
});
dialog.show();
设置Diolog的大小的方法:
public static void setDialogWidthAndHeight(Context context, Dialog dialog, double widtRate, double heightRate) {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.width = (int) (display.getWidth() * widtRate); //设置宽度为屏幕的多少
lp.height = (int) (display.getHeight() * heightRate);//设置高度为屏幕的多少
dialog.getWindow().setAttributes(lp);
}
在 Dialog dialog =new Dialog(MainActivity.this,R.style.NoDialogTitle);中用了style,这是用来取消默认的标题的,它在style中的代码为:
<style parent="@android:Theme.Dialog" name="NoDialogTitle">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
这样结果就没有默认的标题了。
结果如下:
完整的例子:
public class MyDiolag extends BaseActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my);
mButton = (Button) findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Dialog dialog =new Dialog(MyDiolag.this,R.style.NoDialogTitle);
LayoutInflater inflater=getLayoutInflater();
View dialog_view=inflater.inflate(R.layout.dialog_view, null);
Button cancel = (Button) dialog_view.findViewById(R.id.cancel);
Button ok = (Button) dialog_view.findViewById(R.id.ok);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "您确认了", Toast.LENGTH_LONG).show();
dialog.dismiss();