电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Android自定義彈框樣式

瀏覽:76日期:2022-09-22 17:22:02

彈框樣式的自定義是通過改變v7包下的AlertDialog的Window對(duì)象的view及控制Window的寬高實(shí)現(xiàn)的。所有源碼如下,其中自定義View的寬度設(shè)置為手機(jī)屏幕寬度的82%。

import android.app.Dialog;import android.content.Context;import android.support.v7.app.AlertDialog;import android.text.TextUtils;import android.view.LayoutInflater;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.LinearLayout;import android.widget.TextView; import com.environment.protection.R;import com.environment.protection.util.CommonUtil; /** * 簡(jiǎn)單提示彈框改變樣式 * create by csp in 2019/1/31 */public class CustomDialog { private Context mContext; private String mTitle; private String mMessage; private String mPositiveText; private String mNegativeText; private boolean mCancelable=true; private boolean mShowOneBtn=false;//只顯示一個(gè)按鈕 private OnPositiveButtonClickListener mPositiveListener; private OnNegativeButtonClickListener mNegativeListener; private Dialog mDialog; /***描述:為dialog添加一個(gè)自定義的View @author csp 創(chuàng)建日期 :2019/11/14 17:00***/ private View mCustomView; private CustomDialog(Context context) { mContext = context; } public void show() { mDialog=showCustomSimpleDialog(mContext, mTitle, mMessage,mCustomView, mPositiveText,mPositiveListener,mNegativeText,mNegativeListener,mCancelable,mShowOneBtn); } public void cancel(){ if (mDialog!=null){ mDialog.cancel(); } } public static class Builder { private Context mContext; private String mTitle; private String mMessage; private String mPositiveText; private String mNegativeText; private OnPositiveButtonClickListener mPositiveListener; private OnNegativeButtonClickListener mNegativeListener; private boolean mCancelable=true; private boolean mShowOneBtn=false;//只顯示一個(gè)按鈕 private View mCustomView; public Builder setCustomView(View view){ this.mCustomView=view; return this; } public Builder(Context context) { this.mContext = context; } public Builder setTitle(String title) { this.mTitle = title; return this; } public Builder setMessage(String message) { this.mMessage = message; return this; } public Builder setPositiveText(String text) { this.mPositiveText = text; return this; } public Builder setNegativeText(String text) { this.mNegativeText = text; return this; } public Builder setCancelable(boolean cancelable){ this.mCancelable=cancelable; return this; } public Builder setShowOneBtn(boolean showOneBtn){ this.mShowOneBtn=showOneBtn; return this; } public Builder setOnPositiveButtonClickListener(OnPositiveButtonClickListener listener){ this.mPositiveListener=listener; return this; } public Builder setOnNegativeButtonClickListener(OnNegativeButtonClickListener listener){ this.mNegativeListener=listener; return this; } public CustomDialog build() { CustomDialog customDialog = new CustomDialog(mContext); customDialog.mTitle = this.mTitle; customDialog.mMessage = this.mMessage; customDialog.mPositiveText = this.mPositiveText; customDialog.mNegativeText = this.mNegativeText; customDialog.mPositiveListener=this.mPositiveListener; customDialog.mNegativeListener=this.mNegativeListener; customDialog.mCancelable=this.mCancelable; customDialog.mShowOneBtn=this.mShowOneBtn; customDialog.mCustomView=this.mCustomView; customDialog.show(); return customDialog; } } /** * 自定義彈框邏輯事件接口回調(diào)處理 */ public interface OnPositiveButtonClickListener { void onPositiveButtonClick(Dialog dialog); } public interface OnNegativeButtonClickListener { void onNegativeButtonClick(Dialog dialog); } /** * 簡(jiǎn)單提示彈框改變樣式 * @param context 上下文對(duì)象 * @param title 標(biāo)題 * @param msg 內(nèi)容 * @param customView 自定義View * @param positiveText 確認(rèn)按鈕文字 * @param negativeText 取消按鈕文字 * @param positiveListener 確認(rèn)按鈕監(jiān)聽回調(diào) * @param negativeListener 取消按鈕監(jiān)聽回調(diào) * @param cancelable 是否可以取消彈框 * @param showOneBtn 是否隱藏取消按鈕 */ public static Dialog showCustomSimpleDialog(Context context, String title, String msg,View customView, String positiveText,OnPositiveButtonClickListener positiveListener, String negativeText,OnNegativeButtonClickListener negativeListener, boolean cancelable, boolean showOneBtn) { AlertDialog.Builder builder = new AlertDialog.Builder(context); Dialog dialog = builder.show(); //是否可以取消 dialog.setCancelable(cancelable); Window window = dialog.getWindow(); View view = LayoutInflater.from(context).inflate(R.layout.dialog_simple_toast, null); TextView clickNegative = view.findViewById(R.id.click_negative); TextView clickPositive = view.findViewById(R.id.click_positive); TextView dialogTitle = view.findViewById(R.id.dialog_title); TextView dialogMsg = view.findViewById(R.id.dialog_msg); View clickLine = view.findViewById(R.id.click_line); LinearLayout dialogCustomViewContainer=view.findViewById(R.id.dialog_custom_view_container); if (customView!=null){ dialogMsg.setVisibility(View.GONE); dialogCustomViewContainer.setVisibility(View.VISIBLE); dialogCustomViewContainer.addView(customView); }else { dialogMsg.setVisibility(View.VISIBLE); //消息自定義 if (!TextUtils.isEmpty(msg)) { dialogMsg.setText(msg); } dialogCustomViewContainer.setVisibility(View.GONE); } //標(biāo)題自定義 if (!TextUtils.isEmpty(title)) { dialogTitle.setText(title); } //消息自定義 if (!TextUtils.isEmpty(msg)) { dialogMsg.setText(msg); } if (showOneBtn){ clickNegative.setVisibility(View.GONE);//只顯示一個(gè)按鈕,隱藏取消按鈕 clickLine.setVisibility(View.GONE); }else { clickNegative.setVisibility(View.VISIBLE); clickLine.setVisibility(View.VISIBLE); } //確認(rèn)按鈕自定義 if (!TextUtils.isEmpty(positiveText)) { clickPositive.setText(positiveText); } //取消按鈕自定義 if (!TextUtils.isEmpty(negativeText)){ clickNegative.setText(negativeText); } //取消 clickNegative.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.cancel(); //接口回調(diào) if (negativeListener!=null){ negativeListener.onNegativeButtonClick(dialog); } } }); //確認(rèn) clickPositive.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.cancel(); //接口回調(diào) if (positiveListener!=null) { positiveListener.onPositiveButtonClick(dialog); } } }); if (window != null) { WindowManager.LayoutParams params = window.getAttributes(); params.width = CommonUtil.getPhoneWidth(context) * 82 / 100; window.setAttributes(params); window.setBackgroundDrawableResource(R.drawable.bg_white_corner_5); window.setContentView(view); } return dialog; }}

R.layout.dialog_simple_toast文件

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='wrap_content' android:background='@color/white' android:orientation='vertical'> <TextView android: android:layout_width='match_parent' android:layout_height='wrap_content' android:paddingLeft='15dp' android:paddingTop='15dp' android:text='提示' android:textColor='@color/title_text_color' android:textSize='18sp' android:textStyle='bold' /> <LinearLayout android: android:layout_width='match_parent' android:layout_height='wrap_content' android:orientation='vertical' android:visibility='gone' android:paddingTop='5dp' android:paddingLeft='15dp' android:paddingRight='15dp' android:paddingBottom='5dp' > </LinearLayout> <TextView android: android:layout_width='match_parent' android:layout_height='wrap_content' android:paddingLeft='15dp' android:paddingRight='15dp' android:paddingTop='10dp' android:text='提示信息' android:minHeight='65dp' android:textColor='@color/content_text_color' android:textSize='14sp' /> <View android:layout_width='match_parent' android:layout_height='1dp' android:background='@color/divider' /> <LinearLayout android:layout_width='match_parent' android:layout_height='45dp' android:orientation='horizontal'> <TextView android: android:layout_width='0dp' android:visibility='visible' android:layout_height='match_parent' android:layout_weight='1' android:gravity='center' android:text='取消' android:textColor='@color/content_text_color' android:textSize='14sp' /> <View android: android:layout_width='1dp' android:layout_height='match_parent' android:background='@color/divider' /> <TextView android: android:layout_width='0dp' android:layout_height='match_parent' android:layout_weight='1' android:gravity='center' android:text='確認(rèn)' android:textColor='@color/app_blue' android:textSize='14sp' /> </LinearLayout></LinearLayout>

R.drawable.bg_white_corner_5資源文件

<?xml version='1.0' encoding='utf-8'?><shape xmlns:android='http://schemas.android.com/apk/res/android' > <solid android:color='@color/white' /> <corners android:radius='5dp' /> </shape>

部分顏色資源

<!--app自定義顏色--> <color name='app_background'>#fbfafa</color> <color name='app_blue'>#268EE5</color> <color name='tab_indicator'>#0dace6</color> <color name='app_orange'>#f18f45</color> <color name='app_red'>#f77453</color> <!--文字顏色--> <color name='title_text_color_dark'>#222222</color> <color name='title_text_color'>#333333</color> <color name='content_text_color'>#666666</color> <color name='hint_text_color'>#999999</color> <color name='hint_text_color_light'>#aaaaaa</color> <!--分割線顏色--> <color name='divider_dark'>#e2e2e2</color> <color name='divider'>#e6e6e6</color> <color name='divider_light'>#eeeeee</color>

使用方式如下:鏈?zhǔn)秸{(diào)用,可查看源碼自己選擇使用。

CustomDialog.Builder builder=new CustomDialog.Builder(mContext); builder.setTitle('自定義彈框')//默認(rèn)為“提示” .setMessage('自定義內(nèi)容') .setNegativeText('自定義取消文字')//默認(rèn)為“取消” .setPositiveText('自定義確認(rèn)文字')//默認(rèn)為 “確認(rèn)” .setOnPositiveButtonClickListener(new CustomDialog.OnPositiveButtonClickListener() { @Override public void onPositiveButtonClick(Dialog dialog) { ToastUtil.makeText(mContext,'自定義確認(rèn)按鈕監(jiān)聽邏輯處理'); } }) .setOnNegativeButtonClickListener(new CustomDialog.OnNegativeButtonClickListener() { @Override public void onNegativeButtonClick(Dialog dialog) { ToastUtil.makeText(mContext,'自定義取消按鈕監(jiān)聽邏輯處理'); } }) .setCancelable(false)//默認(rèn)true .build();

效果圖如下,使用者可按照實(shí)際需要自定義xml文件進(jìn)行更改:

Android自定義彈框樣式

Android自定義彈框樣式

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | 耐高温硅酸铝板-硅酸铝棉保温施工|亿欧建设工程 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | UV固化机_UVLED光固化机_UV干燥机生产厂家-上海冠顶公司专业生产UV固化机设备 | 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 北京森语科技有限公司-模型制作专家-展览展示-沙盘模型设计制作-多媒体模型软硬件开发-三维地理信息交互沙盘 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 岩石钻裂机-液压凿岩机-劈裂机-挖改钻_湖南烈岩科技有限公司 | 三效蒸发器_多效蒸发器价格_四效三效蒸发器厂家-青岛康景辉 | 视频教程导航网_视频教程之家_视频教程大全_最新视频教程分享发布平台 | 磁力加热搅拌器-多工位|大功率|数显恒温磁力搅拌器-司乐仪器官网 | 慈溪麦田广告公司,提供慈溪广告设计。 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 超声波清洗机_细胞破碎仪_实验室超声仪器_恒温水浴-广东洁盟深那仪器 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 智慧农业|农业物联网|现代农业物联网-托普云农物联网官方网站 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | 微型气象仪_气象传感器_防爆气象传感器-天合传感器大全 | 鼓风干燥箱_真空烘箱_高温干燥箱_恒温培养箱-上海笃特科学仪器 | 冷却塔降噪隔音_冷却塔噪声治理_冷却塔噪音处理厂家-广东康明冷却塔降噪厂家 | 科客,主见不成见| 非甲烷总烃分析仪|环控百科 | 异噻唑啉酮-均三嗪-三丹油-1227-中北杀菌剂厂家 | 气力输送设备_料封泵_仓泵_散装机_气化板_压力释放阀-河南锐驰机械设备有限公司 | 热回收盐水机组-反应釜冷水机组-高低温冷水机组-北京蓝海神骏科技有限公司 | 纯化水设备-EDI-制药-实验室-二级反渗透-高纯水|超纯水设备 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 |