Dialog从底部弹出 在底部位置

一、所需样式:

  

<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();
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值