1.在style文件中创建一个style
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!-- 边框-->
<item name="android:windowIsFloating">true</item><!--是否显示在activity之上-->
<item name="android:windowNoTitle">true</item><!--没有标题-->
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowBackground">@color/colorTransparent</item><!--背景颜色透明-->
<item name="android:background">@color/colorTransparent</item><!--背景透明-->
<item name="android:backgroundDimAmount">0.5</item>
</style>
2.在layout文件中创建money_dialog(文件名)文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="150dp"
android:orientation="vertical"
android:background="@drawable/repeat_drawable">
<TextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:textColor="@color/colorBlack"
android:textSize="19dp"
android:text="总金额" />
<TextView
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/colorLightGray"/>
<EditText
android:id="@+id/name_editText"
android:layout_width="match_parent"
android:layout_marginTop="25dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_height="40dp"
android:focusable="auto"
android:gravity="center"
android:inputType="number"
android:background="@drawable/name_edit_shape"/>
<Button
android:id="@+id/sure_btn"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:textColor="@color/colorMian"
android:gravity="center"
android:textSize="18dp"
android:text="确定"
android:background="@null"/>
</LinearLayout>
3.创建MoneyDialog类继承自Dialog
public class MoneyDialog extends Dialog implements View.OnClickListener {
private Context context;
private EditText money_text;
private Button sure_button;
private SureOnlickLisenter lisenter;
public MoneyDialog(@NonNull Context context) {
super(context, R.style.dialog);
this.context = context;
initView();
bindViews();
}
public void setLisenter(SureOnlickLisenter lisenter) {
this.lisenter = lisenter;
}
private void initView() {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.money_dialog,null);
Window window = this.getWindow();
if (window!=null){
window.setGravity(Gravity.CENTER);
}
setContentView(view);
}
private void bindViews() {
money_text = findViewById(R.id.name_editText);
sure_button = findViewById(R.id.sure_btn);
sure_button.setOnClickListener(this);
}
@Override
public void onClick(View view) {
String money = money_text.getText().toString();
if (money.length()>0){
lisenter.sureOnlcik(Float.valueOf(money));
dismiss();
}else {
Toast.makeText(context,"请输入金额",Toast.LENGTH_SHORT).show();
}
}
public interface SureOnlickLisenter{
void sureOnlcik(float money);
}
}
super(context, R.style.dialog);设置Dialog的style否则会使用系统默认的带标题带框的格式。
在类方法中创建Dialog的view也就是initView方法。
另外该提示框需要传递数据所以声明了一个接口
public interface SureOnlickLisenter{ void sureOnlcik(float money); }
4.在Activity或Fragment中调用
private void showMoneyDialog(){
MoneyDialog dialog = new MoneyDialog(context);
dialog.show();
Window dialogWindow = dialog.getWindow();
WindowManager.LayoutParams params = dialogWindow.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
dialogWindow.getDecorView().setPadding(40,0,40,0);
dialogWindow.setAttributes(params);
dialog.setLisenter(new MoneyDialog.SureOnlickLisenter() {
@Override
public void sureOnlcik(float money) {
}
});
}
点击弹框的确定按钮则Activity中会执行sureOnlcik方法并且获取弹框中输入的数据。