1:继承Dialog,加载布局
public class MyDialog extends Dialog implements View.OnClickListener {
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.tv_msg)
TextView tvMsg;
@BindView(R.id.iv_close)
ImageView ivClose;
public MyDialog (Context context) {
this(context, 0);
}
public MyDialog (Context context, int theme) {
super(context, theme);
View view = LayoutInflater.from(getContext()).inflate(R.layout.vpn_dialog, null);
ButterKnife.bind(this, view);
setContentView(view);
ivClose.setOnClickListener(this);
}
public void setTitle(CharSequence title) {
if (tvTitle == null) {
return;
}
tvTitle.setText(title);
}
public void setMessage(CharSequence message) {
if (tvMsg == null) {
return;
}
tvMsg.setText(message);
}
@Override
public void onClick(View view) {
this.cancel();
}
}
2:布局设置
<RelativeLayout
<!--正常如果这样写是无法对dialog大小进行控制的,需要自己设置背景,还有style-->
android:paddingRight="60dp"
android:paddingLeft="60dp"
android:orientation="vertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/oval_white">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="18sp"
android:textColor="@color/black"
android:layout_marginTop="15dp"
android:layout_marginLeft="15dp"
android:id="@+id/tv_title"/>
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginTop="20dp"
android:layout_marginLeft="15dp"
android:layout_marginBottom="20dp"
android:layout_below="@id/tv_title">
<ProgressBar
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="14sp"
android:textColor="@color/darkgrey"
android:layout_marginLeft="18dp"
android:id="@+id/tv_msg"
android:layout_gravity="center_vertical"/>
</LinearLayout>
<ImageView
android:layout_height="30dp"
android:layout_width="30dp"
android:id="@+id/iv_close"
android:src="@drawable/close"
android:layout_alignParentRight="true"/>
</RelativeLayout>
</RelativeLayout>
3:style设置,透明以后才可以自定义dialog大小
<style name="myDialogStyle" parent="ThemeOverlay.AppCompat.Dialog">
<item name="android:windowFrame">@null</item>
<!-- 是否有边框 -->
<item name="android:windowNoTitle">true</item>
<!-- 是否有标题 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 背景颜色设置为透明 -->
<item name="android:windowIsFloating">true</item>
<!-- 是否是浮动 -->
<item name="android:windowContentOverlay">@null</item>
</style>
4:应用
MyDialog myDialog=new MyDialog(this,R.style.myDialogStyle);
myDialog.setTitle("123");
myDialog.setMessage("456");
myDialog.show();
网友评论