Android DialogUtils弹出窗工具类详解
作者:积少成多,逐渐深入 发布时间:2022-05-13 17:34:56
标签:Android,DialogUtils,弹出窗
本文实例为大家分享了Android DialogUtils弹出窗工具类的具体代码,供大家参考,具体内容如下
直接上代码吧!!!
代码拉过去都可以自行修改,上一部分效果图
可控制显示位置,顶部,居中,底部
工具类代码(style、layout、在文档的后面)
package com.vemo.common.utils;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.text.InputFilter;
import android.text.InputType;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.vemo.common.R;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import cn.qqtheme.framework.entity.Province;
import cn.qqtheme.framework.picker.AddressPicker;
/**
* Created by Martin on 2021/10/17.
*/
public class DialogUitl {
public static final int INPUT_TYPE_TEXT = 0;
public static final int INPUT_TYPE_NUMBER = 1;
public static final int INPUT_TYPE_NUMBER_PASSWORD = 2;
public static final int INPUT_TYPE_TEXT_PASSWORD = 3;
//第三方登录的时候用显示的dialog
public static Dialog loginAuthDialog(Context context) {
Dialog dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.dialog_login_loading);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
return dialog;
}
/**
* 用于网络请求等耗时操作的LoadingDialog
*/
public static Dialog loadingDialog(Context context, String text) {
Dialog dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.dialog_loading);
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
if (!TextUtils.isEmpty(text)) {
TextView titleView = (TextView) dialog.findViewById(R.id.text);
if (titleView != null) {
titleView.setText(text);
}
}
return dialog;
}
public static Dialog loadingDialog(Context context) {
return loadingDialog(context, "");
}
//普通提示框
public static void showSimpleTipDialog(Context context, String content) {
showSimpleTipDialog(context, null, content, false);
}
public static void showSimpleTipDialog(Context context, String content, boolean dark) {
showSimpleTipDialog(context, null, content, dark);
}
//带标题弹窗
public static void showSimpleTipDialog(Context context, String title, String content) {
showSimpleTipDialog(context, title, content, false);
}
public static void showSimpleTipDialog(Context context, String title, String content, boolean dark) {
final Dialog dialog = new Dialog(context, dark ? R.style.dialog : R.style.dialog2);
dialog.setContentView(R.layout.dialog_simple_tip);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
if (!TextUtils.isEmpty(title)) {
TextView titleView = (TextView) dialog.findViewById(R.id.title);
titleView.setText(title);
}
if (!TextUtils.isEmpty(content)) {
TextView contentTextView = (TextView) dialog.findViewById(R.id.content);
contentTextView.setText(content);
}
dialog.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
//确认,取消,带按钮弹窗
public static void showSimpleDialogDark(Context context, String content, SimpleCallback callback) {
new Builder(context)
.setContent(content)
.setBackgroundDimEnabled(true)
.setCancelable(true)
.setClickCallback(callback)
.build()
.show();
}
public static void showSimpleDialog(Context context, String content, SimpleCallback callback) {
showSimpleDialog(context, content, true, callback);
}
public static void showSimpleDialog(Context context, String content, boolean cancelable, SimpleCallback callback) {
showSimpleDialog(context, null, content, cancelable, callback);
}
public static void showSimpleDialog(Context context, String title, String content, boolean cancelable, SimpleCallback callback) {
new Builder(context)
.setTitle(title)
.setContent(content)
.setCancelable(cancelable)
.setClickCallback(callback)
.build()
.show();
}
//可编辑弹窗
public static void showSimpleInputDialog(Context context, String title, String hint, int inputType, int length, SimpleCallback callback) {
new Builder(context).setTitle(title)
.setCancelable(true)
.setInput(true)
.setHint(hint)
.setInputType(inputType)
.setLength(length)
.setClickCallback(callback)
.build()
.show();
}
public static void showSimpleInputDialog(Context context, String title, int inputType, int length, SimpleCallback callback) {
showSimpleInputDialog(context, title, null, inputType, length, callback);
}
public static void showSimpleInputDialog(Context context, String title, int inputType, SimpleCallback callback) {
showSimpleInputDialog(context, title, inputType, 0, callback);
}
public static void showSimpleInputDialog(Context context, String title, SimpleCallback callback) {
showSimpleInputDialog(context, title, INPUT_TYPE_TEXT, callback);
}
//所选项弹窗,效果图上有,可以传多个 传R.string integer类型
public static void showStringArrayDialog(Context context, Integer[] array, final StringArrayDialogCallback callback) {
final Dialog dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.dialog_string_array);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
Window window = dialog.getWindow();
window.setWindowAnimations(R.style.bottomToTopAnim);
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
LinearLayout container = (LinearLayout) dialog.findViewById(R.id.container);
View.OnClickListener itemListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView textView = (TextView) v;
if (callback != null) {
callback.onItemClick(textView.getText().toString(), (int) v.getTag());
}
dialog.dismiss();
}
};
for (int i = 0, length = array.length; i < length; i++) {
TextView textView = new TextView(context);
textView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DpUtil.dp2px(50)));
textView.setTextColor(0xff323232);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
textView.setGravity(Gravity.CENTER);
textView.setText(array[i]);
textView.setTag(array[i]);
textView.setOnClickListener(itemListener);
container.addView(textView);
if (i != length - 1) {
View v = new View(context);
v.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DpUtil.dp2px(1)));
v.setBackgroundColor(0xfff5f5f5);
container.addView(v);
}
}
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
//所选项弹窗,效果图上有,可以传多个 直接传文字 String类型
public static void showStringArrayDialog(Context context, SparseArray<String> array, final StringArrayDialogCallback callback) {
final Dialog dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.dialog_string_array);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
Window window = dialog.getWindow();
window.setWindowAnimations(R.style.bottomToTopAnim);
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
LinearLayout container = (LinearLayout) dialog.findViewById(R.id.container);
View.OnClickListener itemListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView textView = (TextView) v;
if (callback != null) {
callback.onItemClick(textView.getText().toString(), (int) v.getTag());
}
dialog.dismiss();
}
};
for (int i = 0, length = array.size(); i < length; i++) {
TextView textView = new TextView(context);
textView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DpUtil.dp2px(50)));
textView.setTextColor(0xff323232);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
textView.setGravity(Gravity.CENTER);
textView.setText(array.valueAt(i));
textView.setTag(array.keyAt(i));
textView.setOnClickListener(itemListener);
container.addView(textView);
if (i != length - 1) {
View v = new View(context);
v.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DpUtil.dp2px(1)));
v.setBackgroundColor(0xfff5f5f5);
container.addView(v);
}
}
dialog.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
//时间选择器,调用的是系统的时间控件
public static void showDatePickerDialog(Context context, final DataPickerCallback callback) {
final Dialog dialog = new Dialog(context, R.style.dialog);
dialog.setContentView(R.layout.dialog_date_picker);
dialog.setCancelable(true);
dialog.setCanceledOnTouchOutside(true);
DatePicker datePicker = (DatePicker) dialog.findViewById(R.id.datePicker);
final Calendar c = Calendar.getInstance();
datePicker.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int month, int dayOfMonth) {
c.set(year, month, dayOfMonth);
}
});
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_confirm) {
if (callback != null) {
if (c.getTime().getTime() > new Date().getTime()) {
ToastUtil.show(WordUtil.getString(R.string.edit_profile_right_date));
} else {
String result = DateFormat.format("yyyy-MM-dd", c).toString();
callback.onConfirmClick(result);
dialog.dismiss();
}
}
} else {
dialog.dismiss();
}
}
};
dialog.findViewById(R.id.btn_cancel).setOnClickListener(listener);
dialog.findViewById(R.id.btn_confirm).setOnClickListener(listener);
dialog.show();
}
public static class Builder {
private Context mContext;
private String mTitle;
private String mContent;
private String mConfirmString;
private String mCancelString;
private boolean mIsHideTitle;
private int mConfirmColor;
private int mCancelColor;
private boolean mCancelable;
private boolean mBackgroundDimEnabled;//显示区域以外是否使用黑色半透明背景
private boolean mInput;//是否是输入框的
private boolean mGravityCenter = true;
private String mHint;
private int mInputType;
private int mLength;
private SimpleCallback mClickCallback;
public Builder(Context context) {
mContext = context;
}
public Builder setTitle(String title) {
mTitle = title;
return this;
}
public Builder setContent(String content) {
mContent = content;
return this;
}
public Builder setConfrimString(String confirmString) {
mConfirmString = confirmString;
return this;
}
public Builder setCancelString(String cancelString) {
mCancelString = cancelString;
return this;
}
public Builder setIsHideTitle(boolean isHideTitle) {
mIsHideTitle = isHideTitle;
return this;
}
public Builder setConfirmColor(int confirmColor) {
mConfirmColor = confirmColor;
return this;
}
public Builder setCancelColor(int cancelColor) {
mCancelColor = cancelColor;
return this;
}
public Builder setCancelable(boolean cancelable) {
mCancelable = cancelable;
return this;
}
public Builder setBackgroundDimEnabled(boolean backgroundDimEnabled) {
mBackgroundDimEnabled = backgroundDimEnabled;
return this;
}
public Builder setInput(boolean input) {
mInput = input;
return this;
}
public Builder setGravityCenter(boolean gravityCenter) {
mGravityCenter = gravityCenter;
return this;
}
public Builder setHint(String hint) {
mHint = hint;
return this;
}
public Builder setInputType(int inputType) {
mInputType = inputType;
return this;
}
public Builder setLength(int length) {
mLength = length;
return this;
}
public Builder setClickCallback(SimpleCallback clickCallback) {
mClickCallback = clickCallback;
return this;
}
public Dialog build() {
final Dialog dialog = new Dialog(mContext, mBackgroundDimEnabled ? R.style.dialog : R.style.dialog2);
dialog.setContentView(mInput ? R.layout.dialog_input : R.layout.dialog_simple);
dialog.setCancelable(mCancelable);
dialog.setCanceledOnTouchOutside(mCancelable);
TextView titleView = (TextView) dialog.findViewById(R.id.title);
if (mIsHideTitle) {
titleView.setVisibility(View.GONE);
} else {
if (!TextUtils.isEmpty(mTitle)) {
titleView.setText(mTitle);
}
}
final TextView content = (TextView) dialog.findViewById(R.id.content);
if (!TextUtils.isEmpty(mHint)) {
content.setHint(mHint);
}
if (!TextUtils.isEmpty(mContent)) {
content.setText(mContent);
if (!mGravityCenter) {
content.setGravity(Gravity.LEFT);
}
}
if (mInputType == INPUT_TYPE_NUMBER) {
content.setInputType(InputType.TYPE_CLASS_NUMBER);
} else if (mInputType == INPUT_TYPE_NUMBER_PASSWORD) {
content.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
} else if (mInputType == INPUT_TYPE_TEXT_PASSWORD) {
content.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
if (mLength > 0 && content instanceof EditText) {
content.setFilters(new InputFilter[]{new InputFilter.LengthFilter(mLength)});
}
TextView btnConfirm = (TextView) dialog.findViewById(R.id.btn_confirm);
if (!TextUtils.isEmpty(mConfirmString)) {
btnConfirm.setText(mConfirmString);
}
if (mConfirmColor != 0) {
btnConfirm.setTextColor(mConfirmColor);
}
TextView btnCancel = (TextView) dialog.findViewById(R.id.btn_cancel);
if (!TextUtils.isEmpty(mCancelString)) {
btnCancel.setText(mCancelString);
}
if (mCancelColor != 0) {
btnCancel.setTextColor(mCancelColor);
}
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.btn_confirm) {
if (mClickCallback != null) {
if (mInput) {
mClickCallback.onConfirmClick(dialog, content.getText().toString());
} else {
dialog.dismiss();
mClickCallback.onConfirmClick(dialog, "");
}
} else {
dialog.dismiss();
}
} else {
dialog.dismiss();
if (mClickCallback instanceof SimpleCallback2) {
((SimpleCallback2) mClickCallback).onCancelClick();
}
}
}
};
btnConfirm.setOnClickListener(listener);
btnCancel.setOnClickListener(listener);
return dialog;
}
}
public interface DataPickerCallback {
void onConfirmClick(String date);
}
public interface StringArrayDialogCallback {
void onItemClick(String text, int tag);
}
public interface SimpleCallback {
void onConfirmClick(Dialog dialog, String content);
}
public interface SimpleCallback2 extends SimpleCallback {
void onCancelClick();
}
/**
* 城市选择
默认选中 province 省 city 市 district 县/区
*/
public static void showCityChooseDialog(Activity activity, ArrayList<Province> list,
String province, String city, String district, AddressPicker.OnAddressPickListener listener) {
AddressPicker picker = new AddressPicker(activity, list);
picker.setTextColor(0xff323232);
picker.setDividerColor(0xffdcdcdc);
picker.setAnimationStyle(R.style.bottomToTopAnim);
picker.setCancelTextColor(0xff969696);
picker.setSubmitTextColor(0xffff6131);
picker.setTopLineColor(0xfff5f5f5);
picker.setTopBackgroundColor(0xfff5f5f5);
picker.setHeight(DpUtil.dp2px(250));
picker.setOffset(5);
picker.setHideProvince(false);
picker.setHideCounty(false);
picker.setColumnWeight(3 / 9.0f, 3 / 9.0f, 3 / 9.0f);
if (TextUtils.isEmpty(province)) {
province = "北京市";
}
if (TextUtils.isEmpty(city)) {
city = "北京市";
}
if (TextUtils.isEmpty(district)) {
district = "东城区";
}
picker.setSelectedItem(province, city, district);
picker.setOnAddressPickListener(listener);
picker.show();
}
}
style
<style name="dialog" parent="AppTheme">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/transparent</item>
<item name="android:backgroundDimAmount">0.5</item>
<!--显示区域以外是否使用黑色半透明背景-->
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="dialog2" parent="AppTheme">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@color/transparent</item>
<!--显示区域以外是否使用黑色半透明背景-->
<item name="android:backgroundDimEnabled">false</item>
</style>
<style name="bottomToTopAnim" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/bottomview_anim_enter</item>
<item name="android:windowExitAnimation">@anim/bottomview_anim_exit</item>
</style>
<style name="bottomToTopAnim2" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/bottomview_anim_enter_2</item>
<item name="android:windowExitAnimation">@anim/bottomview_anim_exit_2</item>
</style>
<style name="leftToRightAnim" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/left_anim_enter</item>
<item name="android:windowExitAnimation">@anim/left_anim_exit</item>
</style>
layout
dialog_login_loading.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="180dp"
android:layout_height="40dp"
android:background="@drawable/bg_loading_dialog"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="horizontal">
<ProgressBar
android:layout_width="24dp"
android:layout_height="24dp"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/anim_loading"
android:indeterminateOnly="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:text="@string/login_auth_ing"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
</RelativeLayout>
dialog_loading.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="70dp"
android:layout_height="70dp"
android:background="@drawable/bg_loading_dialog"
android:orientation="vertical">
<ProgressBar
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="14dp"
android:layout_marginBottom="8dp"
android:indeterminateBehavior="repeat"
android:indeterminateDrawable="@drawable/anim_loading"
android:indeterminateOnly="true" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/loading"
android:textColor="@color/white"
android:textSize="14sp" />
</LinearLayout>
//anim_loading
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/loading"
android:pivotX="50%"
android:pivotY="50%"
/>
//bg_loading_dialog
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="#b3000000"/>
</shape>
dialog_simlpe_tip.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog"
android:gravity="center_horizontal"
android:orientation="vertical"
>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:gravity="center_horizontal"
android:text="@string/dialog_tip"
android:textColor="@color/textColor"
android:textSize="15sp"
/>
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:textColor="@color/textColor"
android:textSize="14sp"
android:gravity="center_horizontal"
/>
<View
style="@style/line2"
/>
<TextView
android:id="@+id/btn_confirm"
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/global"
android:textSize="14sp"
/>
</LinearLayout>
dialog_data_picker.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog"
android:orientation="vertical">
<DatePicker
android:id="@+id/datePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:calendarViewShown="false"
android:datePickerMode="spinner" />
<View style="@style/line2" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp">
<TextView
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/textColor"
android:textSize="14sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/gray2" />
<TextView
android:id="@+id/btn_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/global"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
dialog_input.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center_horizontal"
android:text="@string/dialog_tip"
android:textColor="@color/textColor"
android:textSize="15sp" />
<EditText
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="10dp"
android:background="@drawable/bg_dialog_input"
android:gravity="center"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:textColor="@color/textColor"
android:textSize="14sp" />
<View style="@style/line2" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp">
<TextView
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/textColor"
android:textSize="14sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/gray2" />
<TextView
android:id="@+id/btn_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/global"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
dialog_simple.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:background="@drawable/bg_dialog"
android:gravity="center_horizontal"
android:orientation="vertical">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center_horizontal"
android:text="@string/dialog_tip"
android:textColor="@color/textColor"
android:textSize="15sp" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:layout_marginRight="15dp"
android:layout_marginBottom="15dp"
android:gravity="center_horizontal"
android:textColor="@color/textColor"
android:textSize="14sp" />
<View style="@style/line2" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp">
<TextView
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/cancel"
android:textColor="@color/textColor"
android:textSize="14sp" />
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/gray2" />
<TextView
android:id="@+id/btn_confirm"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/global"
android:textSize="14sp" />
</LinearLayout>
</LinearLayout>
来源:https://blog.csdn.net/qq_21383035/article/details/120815767
0
投稿
猜你喜欢
- 本文实例讲述了Java泛型定义与用法。分享给大家供大家参考,具体如下:1. 泛型的由来先看如下代码:import java.util.Lis
- 本文实例为大家分享了C#图像处理的具体代码,供大家参考,具体内容如下(1)在Form1窗体中的PictureBox1控件中显示通过OpenF
- 微信朋友圈上面的图片封面,QQ空间说说上面的图片封面都有下拉反弹的效果,这些都是使用滚动条实现的。下拉,当松开时候,反弹至原来的位置。下拉时
- 引言从前面我们可以大致了解了协程的玩法,如果一个协程中使用子协程,那么该协程会等待子协程执行结束后才真正退出,而达到这种效果的原因就是协程上
- 目录前言概念什么是循环依赖?报错信息通俗版理解两人对峙必须有一人妥协Spring版理解实例化和初始化什么区别? * 缓存创建过程(简易版)创建
- 首先下载newtonsoft.json,增加引用using newtonsoft.json.linq;把jobject的内容提取出来,job
- RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色
- 一、引言Good Good Study,Day Day UpMP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么
- 本文实例讲述了java实现统计字符串中字符及子字符串个数的方法。分享给大家供大家参考,具体如下:这里用java实现统计字符串中的字符(包括数
- 前言在spring cloud的项目中用到了feign组件,简单配置过后即可完成请求的调用。又因为有向请求添加Header头的需求,查阅了官
- 关于注入数据说明1.不通过配置文件注入数据通过@Value将外部的值动态注入到Bean中,使用的情况有:注入普通字符串注入操作系统属性注入表
- 上篇文章给大家介绍了浅析C# 中的类型系统(值类型和引用类型),接下来通过本文给大家介绍下c# 泛型类型,说下C#中的泛型,熟练地使用泛型能
- 简介我们知道Java中Collection接口下的很多集合都是线程不安全的, 比如 java.util.ArrayList不是线程安全的,
- 最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种:1. 实现的效果 和微信类似,在设置界面打开切换
- 前言在 C# 编程中,管道式编程(Pipeline Style programming)其实存在已久,最明显的就是我们经常使用的 LINQ。
- Unity OnOpenAsset在Unity中,OnOpenAsset是一个非常有用的回调函数,它可以在用户双击资源文件时自动打开一个编辑
- java数据结构的堆什么是堆堆指的是使用数组保存完全二叉树结构,以层次遍历的方式放入数组中。如图:注意:堆方式适合于完全二叉树,对于非完全二
- 本文实例讲述了Android编程滑动效果之Gallery仿图像集浏览实现方法。分享给大家供大家参考,具体如下:Android系统自带一个Ga
- 一、概述并查集:一种树型数据结构,用于解决一些不相交集合的合并及查询问题。例如:有n个村庄,查询2个村庄之间是否有连接的路,连接2个村庄两大
- 下载安装openoffice,下载地址:http://www.openoffice.org/download/我安装的目录:输入cmd回车在