package com.mylhyl.circledialog.view;
|
|
import android.content.Context;
|
import android.view.Gravity;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
|
import com.mylhyl.circledialog.internal.CircleParams;
|
import com.mylhyl.circledialog.internal.Controller;
|
import com.mylhyl.circledialog.params.ButtonParams;
|
import com.mylhyl.circledialog.params.DialogParams;
|
import com.mylhyl.circledialog.view.listener.ButtonView;
|
import com.mylhyl.circledialog.view.listener.OnCreateButtonListener;
|
|
/**
|
* 对话框确定按钮与取消的视图
|
* Created by hupei on 2017/3/30.
|
*/
|
abstract class AbsButton extends LinearLayout implements ButtonView {
|
|
protected ButtonParams mNegativeParams;
|
protected ButtonParams mPositiveParams;
|
protected ButtonParams mNeutralParams;
|
private DialogParams mDialogParams;
|
private OnCreateButtonListener mOnCreateButtonListener;
|
private TextView mNegativeButton;
|
private TextView mPositiveButton;
|
private TextView mNeutralButton;
|
|
public AbsButton(Context context, CircleParams circleParams) {
|
super(context);
|
init(circleParams);
|
}
|
|
@Override
|
public final void regNegativeListener(OnClickListener onClickListener) {
|
if (mNegativeButton != null) {
|
mNegativeButton.setOnClickListener(onClickListener);
|
}
|
}
|
|
@Override
|
public final void regPositiveListener(OnClickListener onClickListener) {
|
if (mPositiveButton != null) {
|
mPositiveButton.setOnClickListener(onClickListener);
|
}
|
}
|
|
@Override
|
public final void regNeutralListener(OnClickListener onClickListener) {
|
if (mNeutralButton != null) {
|
mNeutralButton.setOnClickListener(onClickListener);
|
}
|
}
|
|
@Override
|
public final void refreshText() {
|
if (mNegativeParams != null && mNegativeButton != null) {
|
handleNegativeStyle();
|
}
|
|
if (mPositiveParams != null && mPositiveButton != null) {
|
handlePositiveStyle();
|
}
|
|
if (mNeutralParams != null && mNeutralButton != null) {
|
handleNeutralStyle();
|
}
|
}
|
|
@Override
|
public final View getView() {
|
return this;
|
}
|
|
@Override
|
public final boolean isEmpty() {
|
return mNegativeParams == null && mPositiveParams == null && mNeutralParams == null;
|
}
|
|
protected abstract void initView();
|
|
protected abstract void setNegativeButtonBackground(View view, int backgroundColor, CircleParams circleParams);
|
|
protected abstract void setNeutralButtonBackground(View view, int backgroundColor, CircleParams circleParams);
|
|
protected abstract void setPositiveButtonBackground(View view, int backgroundColor, CircleParams circleParams);
|
|
private void init(CircleParams circleParams) {
|
mDialogParams = circleParams.dialogParams;
|
mNegativeParams = circleParams.negativeParams;
|
mPositiveParams = circleParams.positiveParams;
|
mNeutralParams = circleParams.neutralParams;
|
mOnCreateButtonListener = circleParams.circleListeners.createButtonListener;
|
|
initView();
|
|
if (mNegativeParams != null) {
|
//取消按钮
|
createNegative();
|
//如果取消按钮没有背景色,则使用默认色
|
int backgroundColor = mNegativeParams.backgroundColor != 0
|
? mNegativeParams.backgroundColor : mDialogParams.backgroundColor;
|
setNegativeButtonBackground(mNegativeButton, backgroundColor, circleParams);
|
}
|
|
if (mNeutralParams != null) {
|
if (mNegativeButton != null) {
|
//分隔线 当且仅当前面有按钮这个按钮不为空的时候才需要添加分割线
|
createDivider();
|
}
|
createNeutral();
|
//如果取消按钮没有背景色,则使用默认色
|
int backgroundColor = mNeutralParams.backgroundColor != 0
|
? mNeutralParams.backgroundColor : mDialogParams.backgroundColor;
|
setNeutralButtonBackground(mNeutralButton, backgroundColor, circleParams);
|
}
|
|
if (mPositiveParams != null) {
|
if (mNeutralButton != null || mNegativeButton != null) {
|
//分隔线 当且仅当前面有按钮这个按钮不为空的时候才需要添加分割线
|
createDivider();
|
}
|
//确定按钮
|
createPositive();
|
//如果取消按钮没有背景色,则使用默认色
|
int backgroundColor = mPositiveParams.backgroundColor != 0
|
? mPositiveParams.backgroundColor : mDialogParams.backgroundColor;
|
setPositiveButtonBackground(mPositiveButton, backgroundColor, circleParams);
|
}
|
|
if (mOnCreateButtonListener != null) {
|
mOnCreateButtonListener.onCreateButton(mNegativeButton, mPositiveButton, mNeutralButton);
|
}
|
}
|
|
private void createNegative() {
|
mNegativeButton = new TextView(getContext());
|
mNegativeButton.setId(android.R.id.button1);
|
mNegativeButton.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
ViewGroup.LayoutParams.WRAP_CONTENT, 1));
|
handleNegativeStyle();
|
addView(mNegativeButton);
|
}
|
|
private void createDivider() {
|
DividerView dividerView = new DividerView(getContext());
|
addView(dividerView);
|
}
|
|
private void createNeutral() {
|
mNeutralButton = new TextView(getContext());
|
mNeutralButton.setId(android.R.id.button2);
|
mNeutralButton.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
ViewGroup.LayoutParams.WRAP_CONTENT, 1));
|
handleNeutralStyle();
|
addView(mNeutralButton);
|
}
|
|
private void createPositive() {
|
mPositiveButton = new TextView(getContext());
|
mPositiveButton.setId(android.R.id.button3);
|
mPositiveButton.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
ViewGroup.LayoutParams.WRAP_CONTENT, 1));
|
handlePositiveStyle();
|
addView(mPositiveButton);
|
}
|
|
private void handleNegativeStyle() {
|
if (mDialogParams.typeface != null) {
|
mNegativeButton.setTypeface(mDialogParams.typeface);
|
}
|
mNegativeButton.setGravity(Gravity.CENTER);
|
mNegativeButton.setText(mNegativeParams.text);
|
mNegativeButton.setEnabled(!mNegativeParams.disable);
|
mNegativeButton.setTextColor(mNegativeParams.disable ?
|
mNegativeParams.textColorDisable : mNegativeParams.textColor);
|
mNegativeButton.setTextSize(mNegativeParams.textSize);
|
mNegativeButton.setHeight(Controller.dp2px(getContext(), mNegativeParams.height));
|
mNegativeButton.setTypeface(mNegativeButton.getTypeface(), mNegativeParams.styleText);
|
}
|
|
private void handleNeutralStyle() {
|
if (mDialogParams.typeface != null) {
|
mNeutralButton.setTypeface(mDialogParams.typeface);
|
}
|
mNeutralButton.setGravity(Gravity.CENTER);
|
mNeutralButton.setText(mNeutralParams.text);
|
mNeutralButton.setEnabled(!mNeutralParams.disable);
|
mNeutralButton.setTextColor(mNeutralParams.disable ?
|
mNeutralParams.textColorDisable : mNeutralParams.textColor);
|
mNeutralButton.setTextSize(mNeutralParams.textSize);
|
mNeutralButton.setHeight(Controller.dp2px(getContext(), mNeutralParams.height));
|
mNeutralButton.setTypeface(mNeutralButton.getTypeface(), mNeutralParams.styleText);
|
}
|
|
private void handlePositiveStyle() {
|
if (mDialogParams.typeface != null) {
|
mPositiveButton.setTypeface(mDialogParams.typeface);
|
}
|
mPositiveButton.setGravity(Gravity.CENTER);
|
mPositiveButton.setText(mPositiveParams.text);
|
mPositiveButton.setEnabled(!mPositiveParams.disable);
|
mPositiveButton.setTextColor(mPositiveParams.disable ?
|
mPositiveParams.textColorDisable : mPositiveParams.textColor);
|
mPositiveButton.setTextSize(mPositiveParams.textSize);
|
mPositiveButton.setHeight(Controller.dp2px(getContext(), mPositiveParams.height));
|
mPositiveButton.setTypeface(mPositiveButton.getTypeface(), mPositiveParams.styleText);
|
}
|
}
|