一、所需样式:
<style name="dialog" parent="@android:style/Theme.Dialog"> <!-- 设置未浮动窗口 --> <item name="android:windowIsFloating">true</item> <!-- 设置无边框 --> <item name="android:windowFrame">@null</item> <!-- 设置无标题 --> <item name="android:windowNoTitle">true</item> <!-- 设置完全透明 --> <item name="android:windowBackground">@color/color_transparent_background</item> <!-- 设置屏幕变暗 --> <item name="android:backgroundDimEnabled">true</item> </style>
<color name="transparent_background">#00000000</color>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="7dip"></corners> <solid android:color="@android:color/white"></solid> </shape>
<style name="linehorizontal"> <item name="android:layout_width">1px</item> <item name="android:layout_height">wrap_content</item> <item name="android:background">#EFEDED</item> </style>
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="false" android:drawable="@android:color/transparent"></item> <item android:state_pressed="true" android:drawable="@color/black_10_color"></item> <item android:drawable="@color/black_10_color"></item> </selector>
<?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="wrap_content" android:background="@color/transparent_background" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:background="@drawable/bg_white_shape" android:orientation="vertical"> <Button android:id="@+id/btn_advance" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/dra_comm_btn" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="" android:textColor="#1E84FC" android:textSize="18sp" android:visibility="gone" /> <View style="@style/linehorizontal" android:layout_width="match_parent" android:layout_height="1px" android:visibility="gone" /> <Button android:id="@+id/btn_mycard" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/dra_comm_btn" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="" android:textColor="#1E84FC" android:textSize="18sp" /> <View style="@style/linehorizontal" android:layout_width="match_parent" android:layout_height="1px" /> <Button android:id="@+id/btn_advance_pw" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/dra_comm_btn" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="" android:textColor="#1E84FC" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dip" android:layout_marginLeft="10dip" android:layout_marginRight="10dip" android:layout_marginTop="10dip" android:background="@drawable/bg_white_shape" android:orientation="vertical"> <Button android:id="@+id/btn_cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/dra_comm_btn" android:paddingBottom="15dp" android:paddingTop="15dp" android:text="取消" android:textColor="#1E84FC" android:textSize="18sp" /> </LinearLayout> </LinearLayout>
二、自定义dialog:
package com.haowu.haowuchinapurchase.widget; import android.app.Dialog; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import com.haowu.haowuchinapurchase.R; /** * Created by 20164237 on 2016/3/8. * 自定义dialog 我的钱包 更多弹出 */ public class CustomBothDialog implements View.OnClickListener { Context mContext; Dialog dialog; OnCDialogCalback onDialogCalback; View contentView; Button btn_advance, btn_mycard, btn_advance_pw, btnCancel; String advance, mycard, advance_pw, cancel; public CustomBothDialog(Context context) { this.mContext = context; } public Dialog create() { init(); dialog = new Dialog(mContext, R.style.dialog); dialog.setContentView(contentView); Window window = dialog.getWindow(); // 可以在此设置显示动画 WindowManager.LayoutParams wl = window.getAttributes(); wl.x = 0; wl.y = window.getWindowManager().getDefaultDisplay().getHeight(); // 以下这两句是为了保证按钮可以水平满屏 wl.width = ViewGroup.LayoutParams.MATCH_PARENT; wl.height = ViewGroup.LayoutParams.WRAP_CONTENT; // 设置显示位置 dialog.onWindowAttributesChanged(wl); setValues(); return dialog; } private void init() { contentView = View.inflate(mContext, R.layout.dialog_wallet, null); findViewById(); setListener(); } private void findViewById() { btn_advance = (Button) contentView.findViewById(R.id.btn_advance); btn_mycard = (Button) contentView.findViewById(R.id.btn_mycard); btn_advance_pw = (Button) contentView.findViewById(R.id.btn_advance_pw); btnCancel = (Button) contentView.findViewById(R.id.btn_cancel); } private void setListener() { btn_advance.setOnClickListener(this); btn_mycard.setOnClickListener(this); btn_advance_pw.setOnClickListener(this); btnCancel.setOnClickListener(this); } private void setValues() { if (advance != null) { btn_advance.setText(advance); } if (mycard != null) { btn_mycard.setText(mycard); } if (advance_pw != null) { btn_advance_pw.setText(advance_pw); } if (cancel != null) { btnCancel.setText(cancel); } } /** * 设置按钮显示,使用null,则显示默认(确定或者取消 ) * * @ReqParam ok * @ReqParam cancel */ public void setButtonText(String advance, String mycard, String advance_pw, String cancel) { this.advance = advance; this.mycard = mycard; this.advance_pw = advance_pw; this.cancel = cancel; } public void onClick(View v) { if (v == btn_advance) { if (onDialogCalback != null) { onDialogCalback.onAdvance(this); } } else if (v == btn_mycard) { if (onDialogCalback != null) { onDialogCalback.onMycard(this); } } else if (v == btn_advance_pw) { if (onDialogCalback != null) { onDialogCalback.onAdvancePw(this); } } else if (v == btnCancel) { if (onDialogCalback != null) { onDialogCalback.onCancel(this); } } } public void setOnCDialogCalback(OnCDialogCalback onDialogCalback) { this.onDialogCalback = onDialogCalback; } public interface OnCDialogCalback { void onAdvance(CustomBothDialog dialog); void onMycard(CustomBothDialog dialog); void onAdvancePw(CustomBothDialog dialog); void onCancel(CustomBothDialog dialog); } }三、使用:
private void walletDialog() { CustomBothDialog walletDialog = new CustomBothDialog(mActivity); walletDialog.setButtonText("提现", "我的银行卡", "钱包密码", "取消"); final Dialog cDialog = walletDialog.create(); walletDialog.setOnCDialogCalback(new CustomBothDialog.OnCDialogCalback() { @Override public void onAdvance(CustomBothDialog dialog) { //暂时隐藏了 cDialog.dismiss(); } @Override public void onMycard(CustomBothDialog dialog) { cDialog.dismiss(); } @Override public void onAdvancePw(CustomBothDialog dialog) { cDialog.dismiss(); } @Override public void onCancel(CustomBothDialog dialog) { cDialog.dismiss(); } }); cDialog.show(); }