DialogUtils弹出窗工具 Android DialogUtils弹出窗工具类详解
积少成多,逐渐深入 人气:0想了解Android DialogUtils弹出窗工具类详解的相关内容吗,积少成多,逐渐深入在本文为您仔细讲解DialogUtils弹出窗工具的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点: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>
加载全部内容