一,先看看想要实现的dialog效果。
要实现这要的效果,我们需要几个应该注意的关键点:
1,如何定义圆角边框。
bg_title_custom_dialog.xml 四周都是圆角按钮。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item><shape>
<gradient android:angle="270" android:endColor="#e1e1e1" android:startColor="#e1e1e1" />
<corners android:topLeftRadius="15dp" android:topRightRadius="15dp" />
</shape></item>
</selector>
bg_bottom_custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="">
<item><shape>
<gradient android:angle="270" android:endColor="#e1e1e1" android:startColor="#e1e1e1" />
<corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" />
</shape></item>
</selector>
2,适当的场合设置透明背景颜色。EditText设置透明背景色去掉黄色边框。
android:background="@color/transparent"
<color name="transparent">#00000000</color>
3,改变dialog样式:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog" >
<item name="android:windowFrame">@null</item>
<!-- 边框 -->
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsFloating">true</item>
<!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 半透明 -->
<item name="android:windowNoTitle">true</item>
<!-- 无标题 -->
<!-- <item name="android:windowBackground">@color/alpha_bg</item>背景透明 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 模糊 -->
</style>
</resources>
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/write"
android:orientation="vertical" >
<LinearLayout
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" >
<ImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dip"
android:src="@drawable/input"></ImageView>
<TextView
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"
/>
</LinearLayout>
<!-- <LinearLayout
android:id="@+id/contentView"
android:layout_width="fill_parent"
android:layout_height="wrap_content" > -->
<EditText
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="请输入回复内容" />
<!-- </LinearLayout> -->
<LinearLayout
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" >
<Button
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" />
<Button
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" />
</LinearLayout>
</LinearLayout>
三:设置自定义文件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);
}