在自定義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>