前言
记录一些自己项目上自定义的Dialog
例子1:单选对话框
布局
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/public_shape_white_rectangle_corners10dp"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dp" android:paddingBottom="10dp" android:textColor="@color/public_color_181818" android:textSize="18sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <View android:id="@+id/line1" android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/public_color_f2f2f2" app:layout_constraintTop_toBottomOf="@id/title" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"/> <TextView android:id="@+id/content" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:textSize="16sp" android:textColor="@color/public_color_666666" android:paddingTop="31dp" android:paddingBottom="31dp" android:paddingLeft="48dp" android:paddingRight="48dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/line1"/> <View android:id="@+id/line2" android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/public_color_f2f2f2" app:layout_constraintTop_toBottomOf="@id/content" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent"/> <TextView android:id="@+id/left" android:layout_width="0dp" android:layout_height="wrap_content" android:textColor="@color/public_color_111111" android:textSize="17sp" android:gravity="center" android:paddingTop="15dp" android:paddingBottom="15dp" android:background="@drawable/public_pressed_white_to_gray_left_radius" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/line3" app:layout_constraintTop_toBottomOf="@id/line2" /> <View android:id="@+id/line3" android:layout_width="1dp" android:layout_height="0dp" android:background="@color/public_color_f2f2f2" app:layout_constraintTop_toTopOf="@id/left" app:layout_constraintBottom_toBottomOf="@id/left" app:layout_constraintLeft_toRightOf="@id/left" app:layout_constraintRight_toLeftOf="@id/right"/> <TextView android:id="@+id/right" android:layout_width="0dp" android:layout_height="wrap_content" android:textColor="@color/public_colorPrimary" android:textSize="17sp" android:gravity="center" android:paddingTop="15dp" android:paddingBottom="15dp" android:background="@drawable/public_pressed_white_to_gray_right_radius" app:layout_constraintLeft_toRightOf="@id/line3" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/line2" /> </androidx.constraintlayout.widget.ConstraintLayout>
代码
package net.yt.whale.common.views; import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.text.SpannableString; import android.util.DisplayMetrics; import android.view.View; import android.view.WindowManager; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.StringRes; import net.yt.whale.common.R; /** * content: 单选对话框 * time: 2020-3-16 * * @author: zhouqiang */ public class SelectDialog extends Dialog { public TextView mTitle; public View mLine1; public TextView mContent; public View mLine2; public TextView mLeftButton; public View mLine3; public TextView mRightButton; private OnDialogListener mOnDialogListener = null; private SelectDialog(@NonNull Context context) { super(context); } private SelectDialog(@NonNull Context context, int themeResId) { super(context, themeResId); } public SelectDialog(@NonNull Context context, boolean cancelable, String title, String content, String leftButton, String rightButton) { super(context, cancelable, null); initView(); mTitle.setText(title); mContent.setText(content); mLeftButton.setText(leftButton); mRightButton.setText(rightButton); initListener(); } public SelectDialog(@NonNull Context context, boolean cancelable, @StringRes int title, @StringRes int content, @StringRes int leftButton, @StringRes int rightButton) { super(context, cancelable, null); initView(); mTitle.setText(title); mContent.setText(content); mLeftButton.setText(leftButton); mRightButton.setText(rightButton); initListener(); } public SelectDialog(@NonNull Context context, boolean cancelable, @StringRes int title, String content, @StringRes int leftButton, @StringRes int rightButton) { super(context, cancelable, null); initView(); mTitle.setText(title); mContent.setText(content); mLeftButton.setText(leftButton); mRightButton.setText(rightButton); initListener(); } public SelectDialog(@NonNull Context context, boolean cancelable, @StringRes int title, SpannableString content, @StringRes int leftButton, @StringRes int rightButton) { super(context, cancelable, null); initView(); mTitle.setText(title); mContent.setText(content); mLeftButton.setText(leftButton); mRightButton.setText(rightButton); initListener(); } public SelectDialog(@NonNull Context context, boolean cancelable, String title, String content, @StringRes int leftButton, @StringRes int rightButton) { super(context, cancelable, null); initView(); mTitle.setText(title); mContent.setText(content); mLeftButton.setText(leftButton); mRightButton.setText(rightButton); initListener(); } private void initView() { setContentView(R.layout.public_dialog_select); this.mTitle = (TextView) findViewById(R.id.title); this.mContent = (TextView) findViewById(R.id.content); this.mLeftButton = (TextView) findViewById(R.id.left); this.mRightButton = (TextView) findViewById(R.id.right); this.mLine1 = (View) findViewById(R.id.line1); this.mLine2 = (View) findViewById(R.id.line2); this.mLine3 = (View) findViewById(R.id.line3); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics(); int width = (int) (displayMetrics.widthPixels * 0.90); WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.width = width; getWindow().setAttributes(layoutParams); getWindow().getDecorView().setBackground(new ColorDrawable(Color.TRANSPARENT)); } private void initListener() { mLeftButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnDialogListener != null) { mOnDialogListener.onClickLeft(SelectDialog.this); } } }); mRightButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnDialogListener != null) { mOnDialogListener.onClickRight(SelectDialog.this); } } }); } public void setOnDialogListener(OnDialogListener listener) { this.mOnDialogListener = listener; } public interface OnDialogListener { void onClickLeft(SelectDialog dialog); void onClickRight(SelectDialog dialog); } public TextView getTitle() { return mTitle; } public View getLine1() { return mLine1; } public TextView getContent() { return mContent; } public View getLine2() { return mLine2; } public TextView getLeftButton() { return mLeftButton; } public View getLine3() { return mLine3; } public TextView getRightButton() { return mRightButton; } }
end