好久没写博客了,也好久没有做过自定义弹出框了,然后发现博
客还给自定义Dialog弹窗留了个位置,今天就写一个最简单的自
定义的Dialog弹出框
老规矩,先上效果图:
1.先写style文件,写一些要用到的样式:
<style name="CustomDialogStyle" parent="@android:style/Theme.Dialog"> <!-- 边框 --> <item name="android:windowFrame">@null</item> <!-- 背景透明 --> <item name="android:windowBackground">@color/transparent</item> <!-- 无标题 --> <item name="android:windowNoTitle">true</item> <!-- 是否浮现在activity之上 --> <item name="android:windowIsFloating">true</item> <!-- 半透明 --> <item name="android:windowIsTranslucent">false</item> <!-- 背景模糊 --> <item name="android:windowContentOverlay">@null</item> <!-- 允许对话框的背景变暗 --> <item name="android:backgroundDimEnabled">true</item> <!-- 字体颜色 --> <item name="android:textColor">@color/black</item> <item name="android:editTextColor">@color/black</item> </style>
2.写布局,这个布局可以自己随意定义的,所以是自定义(有些废
话了)
<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:background="#D4D4D4" android:layout_gravity="center" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_gravity="center" android:layout_marginRight="30dp" android:layout_marginLeft="30dp" android:background="@drawable/rl_mine_job_certify" android:layout_width="match_parent" android:layout_height="200dp"> <LinearLayout android:orientation="horizontal" android:id="@+id/ll_A" android:layout_width="match_parent" android:layout_height="150dp"> <TextView android:id="@+id/tv_content" android:gravity="center" android:textSize="16sp" android:text="你还没有选择职业,请选择职业" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_below="@id/ll_A" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/tv_cancle" android:textSize="20sp" android:gravity="center" android:text="取消" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <TextView android:id="@+id/tv_choose_job" android:textSize="20sp" android:gravity="center" android:textColor="#000" android:text="选择职业" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> </RelativeLayout> </FrameLayout>
3.再来写自定义View的代码,实现Dialog
import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.mobimtech.etp.mine.R; /** * 自定义Dialog弹窗 * Created by ManitoZhang on 2018-05-15. */ public class CertifyJobDialog extends Dialog{ /** * 提示 */ protected TextView hintTv; /** * 左边按钮 */ protected TextView doubleLeftBtn; /** * 右边按钮 */ protected TextView doubleRightBtn; public CertifyJobDialog(Context context) { super(context, R.style.CustomDialogStyle); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setCancelable(false); // 是否可以撤销 setContentView(R.layout.dialog_certify_job); hintTv = (TextView) findViewById(R.id.tv_content); doubleLeftBtn = (TextView) findViewById(R.id.tv_cancle); doubleRightBtn = (TextView) findViewById(R.id.tv_choose_job); } /** * 设置右键文字和点击事件 * * @param rightStr 文字 * @param clickListener 点击事件 */ public void setRightButton(String rightStr, View.OnClickListener clickListener) { doubleRightBtn.setOnClickListener(clickListener); doubleRightBtn.setText(rightStr); } /** * 设置左键文字和点击事件 * * @param leftStr 文字 * @param clickListener 点击事件 */ public void setLeftButton(String leftStr, View.OnClickListener clickListener) { doubleLeftBtn.setOnClickListener(clickListener); doubleLeftBtn.setText(leftStr); } /** * 设置提示内容 * * @param str 内容 */ public void setHintText(String str) { hintTv.setText(str); hintTv.setVisibility(View.VISIBLE); } /** * 给两个按钮 设置文字 * * @param leftStr 左按钮文字 * @param rightStr 右按钮文字 */ public void setBtnText(String leftStr, String rightStr) { doubleLeftBtn.setText(leftStr); doubleRightBtn.setText(rightStr); } }
4.最后我们就可以用了,直接调用就行
final CertifyJobDialog dialog = new CertifyJobDialog(this); dialog.show(); dialog.setHintText("你还未进行职业认证,请先完成认证!"); dialog.setLeftButton("取消", new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.setRightButton("职业认证", new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } });
好了,biubiubiu,完成了!