美文网首页
自定义progressdialog

自定义progressdialog

作者: 海内灬存知己 | 来源:发表于2021-05-07 10:35 被阅读0次

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

相关文章

网友评论

      本文标题:自定义progressdialog

      本文链接:https://www.haomeiwen.com/subject/bqdsdltx.html