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方法并且擷取彈框中輸入的資料。