好久没写博客了,也好久没有做过自定义弹出框了,然后发现博
客还给自定义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,完成了!