自定义弹框居中

自定义弹框居中

效果展示

居中弹框

第一步

在res的drawable下创建bg_round_left_white:

< shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
< solid android:color="@color/white" />
< corners android:bottomLeftRadius="8dp" />
< /shape>	

创建bg_round_right_white

< shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
< solid android:color="@color/white" />
< corners android:bottomRightRadius="8dp" />
< /shape>

创建弹框的背景:

< shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
< solid android:color="@color/white" />
< corners android:radius="8dp" />
< /shape>

第二步

在res的values下的styles中写:

<style name="dialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <!--边框-->
    <item name="android:windowIsFloating">true</item>
    <!--是否浮现在activity之上-->
    <item name="android:windowIsTranslucent">false</item>
    <!--半透明-->
    <item name="android:windowNoTitle">true</item>
    <!--无标题-->
    <item name="android:windowBackground">@android:color/transparent</item>
    <!--背景透明-->
    <item name="android:backgroundDimEnabled">true</item>
    <!--模糊-->
</style>

第三步

1.activity_main布局不变
2.MainActivity中写:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    CommomDialog commomDialog = new CommomDialog(MainActivity.this, R.style.dialog, "我是谁,我在哪? --  VollegeTargetActivity", new CommomDialog.OnCloseListener() {
        @Override
        public void onClick(Dialog dialog, boolean confirm) {
            dialog.dismiss();
        }
    });
    commomDialog.setTitle("提示").show();
}

}

3.dialog_common_layout弹框布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_round_white"
android:orientation="vertical" >

<TextView
    android:id="@+id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:padding="12dp"
    android:layout_marginTop="12dp"
    android:text="提示"
    android:textSize="16sp"
    android:textColor="@color/black"/>

<TextView
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_gravity="center_horizontal"
    android:lineSpacingExtra="3dp"
    android:layout_marginLeft="40dp"
    android:layout_marginTop="20dp"
    android:layout_marginRight="40dp"
    android:layout_marginBottom="30dp"
    android:text="签到成功,获得200积分"
    android:textSize="12sp"
    android:textColor="#FF3950"/>
<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#000"/>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/cancel"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1.0"
        android:gravity="center"
        android:text="取消"
        android:textSize="12sp"
        android:textColor="#C1C1C1"/>

    <View
        android:layout_width="1dp"
        android:layout_height="match_parent"
        android:background="#000"/>

    <TextView
        android:id="@+id/submit"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:layout_weight="1.0"
        android:text="确定"
        android:textSize="12sp"
        android:textColor="#8683B7"/>
</LinearLayout>
</LinearLayout>

4.CommomDialog:

public class CommomDialog extends Dialog implements View.OnClickListener {
private TextView contentTxt;
private TextView titleTxt;
private TextView submitTxt;
private TextView cancelTxt;

private Context mContext;
private String content;
private OnCloseListener listener;
private String positiveName;
private String negativeName;
private String title;

public CommomDialog(Context context) {
    super(context);
    this.mContext = context;
}

public CommomDialog(Context context, int themeResId, String content) {
    super(context, themeResId);
    this.mContext = context;
    this.content = content;
}

public CommomDialog(Context context, int themeResId, String content, OnCloseListener listener) {
    super(context, themeResId);
    this.mContext = context;
    this.content = content;
    this.listener = listener;
}

protected CommomDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
    super(context, cancelable, cancelListener);
    this.mContext = context;
}

public CommomDialog setTitle(String title) {
    this.title = title;
    return this;
}

public CommomDialog setPositiveButton(String name) {
    this.positiveName = name;
    return this;
}

public CommomDialog setNegativeButton(String name) {
    this.negativeName = name;
    return this;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog_common_layout);
    setCanceledOnTouchOutside(false);
    initView();
}

private void initView() {
    contentTxt = (TextView) findViewById(R.id.content);
    titleTxt = (TextView) findViewById(R.id.title);
    submitTxt = (TextView) findViewById(R.id.submit);
    submitTxt.setOnClickListener(this);
    cancelTxt = (TextView) findViewById(R.id.cancel);
    cancelTxt.setOnClickListener(this);

    contentTxt.setText(content);
    if (!TextUtils.isEmpty(positiveName)) {
        submitTxt.setText(positiveName);
    }

    if (!TextUtils.isEmpty(negativeName)) {
        cancelTxt.setText(negativeName);
    }

    if (!TextUtils.isEmpty(title)) {
        titleTxt.setText(title);
    }

}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.cancel:
            if (listener != null) {
                listener.onClick(this, false);
            }
            this.dismiss();
            break;
        case R.id.submit:
            if (listener != null) {
                listener.onClick(this, true);
            }
            break;
    }
}

public interface OnCloseListener {
    void onClick(Dialog dialog, boolean confirm);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值