一,先看看想要实现的dialog效果。
要实现这要的效果,我们需要几个应该注意的关键点:
1,如何定义圆角边框。
bg_title_custom_dialog.xml 四周都是圆角按钮。
bg_bottom_custom_dialog.xml
2,适当的场合设置透明背景颜色。EditText设置透明背景色去掉黄色边框。
android:background="@color/transparent"
#00000000
3,改变dialog样式:
@null
true
true
false
@android:color/transparent
true
true
4,改变dialog在页面显示的宽高。 在dialog.show()后面调用,设置对话框的宽高。
dialog.show();
//设置对话框的宽高
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高
android.view.WindowManager.LayoutParams p = getWindow().getAttributes();
p.height = (int) (d.getHeight() * 0.3); // 高度设置为屏幕的0.8
p.width = (int) (d.getWidth() * 0.9); // 宽度设置为屏幕的0.7
dialog.getWindow().setAttributes(p);
二,先设置自定义对话框布局:
custom_input_dialog.xml
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/write"
android:orientation="vertical" >
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_title_custom_dialog"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:orientation="horizontal" >
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dip"
android:src="@drawable/input">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dip"
android:textSize="25sp"
android:text="提示"
android:textColor="@color/black"
/>
android:id="@+id/fuifu_msg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dip"
android:gravity="left|center"
android:textSize="22sp"
android:background="@color/transparent"
android:hint="请输入回复内容" />
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dip"
android:paddingBottom="5dip"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:background="@drawable/bg_bottom_custom_dialog"
android:orientation="horizontal" >
android:id="@+id/positiveButton"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:text="确定"
android:textSize="20sp"
android:gravity="center" />
android:id="@+id/negativeButton"
android:layout_width="0dip"
android:layout_weight="1"
android:background="@drawable/button_bg"
android:layout_height="wrap_content"
android:layout_marginLeft="20.0dip"
android:text="取消"
android:textSize="20sp"
android:gravity="center" />
三:设置自定义文件dialog:
/**
*
*/
package com.gaosheng.foodproduction.d;
import com.gaosheng.foodproduction.R;
import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
* @Description: TODO自定义输入对话框
* @author daipengcheng
* @date 2015-11-16 上午9:04:19
* @version V1.0
*/
public class custom_input_dialog extends Dialog{
/**
* @param context
*/
private EditText editText;
private Button positiveButton, negativeButton;
private TextView title;
public custom_input_dialog(Context context) {
super(context,R.style.dialog);
setCustomDialog();
}
private void setCustomDialog() {
View mView = LayoutInflater.from(getContext()).inflate(R.layout.custom_input_dialog, null);
title = (TextView) mView.findViewById(R.id.title);
editText = (EditText) mView.findViewById(R.id.fuifu_msg);
positiveButton = (Button) mView.findViewById(R.id.positiveButton);
negativeButton = (Button) mView.findViewById(R.id.negativeButton);
super.setContentView(mView);
}
public View getEditText(){
return editText;
}
@Override
public void setContentView(int layoutResID) {
}
@Override
public void setContentView(View view, LayoutParams params) {
}
@Override
public void setContentView(View view) {
}
/**
* 确定键监听器
* @param listener
*/
public void setOnPositiveListener(View.OnClickListener listener){
positiveButton.setOnClickListener(listener);
}
/**
* 取消键监听器
* @param listener
*/
public void setOnNegativeListener(View.OnClickListener listener){
negativeButton.setOnClickListener(listener);
}
}
四:在activity中使用对话框
final custom_input_dialog dialog = new custom_input_dialog(tzggActivity.this);
final EditText editText = (EditText) dialog.getEditText();//方法在CustomDialog中实现
dialog.setOnPositiveListener(new OnClickListener() {
@Override
public void onClick(View v) {
huifuStr=editText.getText().toString();
pd2 = ProgressDialog.show(tzggActivity.this, "提示", "正在添加..");
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
date=sDateFormat.format(new java.util.Date());
dialog.dismiss();
pd2.show();
new Thread(new Runnable() {
@SuppressWarnings("static-access")
@Override
public void run() {
str =bll.UploadGg(zfrybh,
mima,myguid,huifuStr,date);
toast(0,str);
if (str.equals("1")) {
handler.sendEmptyMessage(2);
} else
{
handler.sendEmptyMessage(3);
}
}
}).start();
}
});
dialog.setOnNegativeListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
//设置对话框的宽高
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); // 为获取屏幕宽、高
android.view.WindowManager.LayoutParams p = getWindow().getAttributes();
p.height = (int) (d.getHeight() * 0.3); // 高度设置为屏幕的0.8
p.width = (int) (d.getWidth() * 0.9); // 宽度设置为屏幕的0.7
dialog.getWindow().setAttributes(p);
}