自定義Dialog的書寫

在自定義Dialog中添加當前的相應的問題。

package com.tencent.oscar.base.widgets;

import android.app.Dialog;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

import com.tencent.oscar.base.R;

public class CustomDialog extends Dialog implements View.OnClickListener{

    private OnClickLinstener mListener;
    private TextView mTvTttile;
    private TextView mTvMessage;

    public CustomDialog(@NonNull Context context) {
        this(context,R.style.Custome);
    }

    public CustomDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
        init(context);
    }

    public void setTitle(String title) {
        if(mTvTttile != null){
            mTvTttile.setText(title);
        }
    }

    public void setMessage(String message){
        if(mTvMessage != null){
            mTvMessage.setText(message);
        }
    }

    public void init(Context context) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View view = inflater.inflate(R.layout.dialog_item, null);
        setContentView(view);
        mTvTttile = (TextView) view.findViewById(R.id.textview_title);
        mTvMessage = (TextView) view.findViewById(R.id.textview_message);
        TextView tvConfirm = (TextView) view.findViewById(R.id.btn_ok);
        TextView tvCancel = (TextView) view.findViewById(R.id.btn_cancel);

        tvConfirm.setOnClickListener(this);
        tvCancel.setOnClickListener(this);

        Window dialogWindow = getWindow();
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        DisplayMetrics d = context.getResources().getDisplayMetrics(); // 獲取屏幕寬、高用
        lp.width = (int) (d.widthPixels * 0.8); // 高度設置爲屏幕的0.6
        dialogWindow.setAttributes(lp);
    }

    public void setOnClickLinstener(OnClickLinstener linstener){
        mListener = linstener;
    }

    @Override
    public void onClick(View v) {
        if(v.getId() == R.id.btn_ok){
            if(mListener != null){
                mListener.doConfirm();
            }
        }else if(v.getId() == R.id.btn_cancel){
            if(mListener != null){
                mListener.doCancel();
            }
        }
        dismiss();
    }


    public interface OnClickLinstener {
        public void doConfirm();
        public void doCancel();
    }

}

可以看下當前的style:

<style name="Custome" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:background">#F2000000</item>
    <item name="android:backgroundDimEnabled">true</item>
</style>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章