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

您的位置:首頁技術文章
文章詳情頁

android自定義彈出框樣式的實現方法

瀏覽:136日期:2022-09-23 18:49:41

前言:

做項目時,感覺android自帶的彈出框樣式比較丑,很多應用都是自己做的彈出框,這里也試著自己做了一個。

廢話不說先上圖片:

android自定義彈出框樣式的實現方法

實現機制

1.先自定義一個彈出框的樣式

2.自己實現CustomDialog類,繼承自Dialog,實現里面方法,在里面加載自定義樣式的彈出框;

3.使用時,與使用Dialog一樣

具體代碼

dialog_normal_layout.xml樣式文件

<?xml version='1.0' encoding='utf-8'?><FrameLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='fill_parent' android:layout_height='fill_parent' android:clickable='true' android:orientation='vertical' android:padding='20.0dip' > <LinearLayout android:layout_width='fill_parent' android:layout_height='wrap_content' android:layout_gravity='center' android:background='@drawable/bg_bombbox' android:orientation='vertical' > <TextView android: android:layout_width='fill_parent' android:layout_height='40.0dip' android:gravity='center' android:text='@string/title_alert' android:visibility='visible' /> <LinearLayout android: android:layout_width='fill_parent' android:layout_height='wrap_content' android:gravity='center' ><TextViewandroid: android:layout_width='fill_parent'android:layout_height='wrap_content'android:gravity='left|center'android:lineSpacingMultiplier='1.5'android:minHeight='120.0dip'android:paddingBottom='15.0dip'android:paddingLeft='20.0dip'android:paddingRight='20.0dip'android:paddingTop='15.0dip' /> </LinearLayout> <View android:layout_width='fill_parent' android:layout_height='1.0px' android:background='#ffd0d0d0' /> <LinearLayout android:layout_width='fill_parent' android:layout_height='60.0dip' android:layout_gravity='bottom' android:background='@drawable/dialog_bottom_bg' android:gravity='center' android:orientation='horizontal' > <Buttonandroid: android:layout_width='114.0dip'android:layout_height='40.0dip'android:background='@drawable/btn_ok_selector'android:gravity='center'android:text='@string/ok' /> <Buttonandroid: android:layout_width='114.0dip'android:layout_height='40.0dip'android:layout_marginLeft='20.0dip'android:background='@drawable/btn_cancel_selector'android:gravity='center'android:text='@string/cancel' /> </LinearLayout> </LinearLayout> </FrameLayout>

其中引用的樣式文件styles.xml

<?xml version='1.0' encoding='utf-8'?><resources xmlns:android='http://schemas.android.com/apk/res/android'> <style name='AppBaseTheme' parent='android:Theme.Light'></style> <style name='AppTheme' parent='AppBaseTheme'></style> <style name='text_18_ffffff'> <item name='android:textSize'>18.0dip</item> <item name='android:textColor'>#ffffffff</item> </style> <style name='text_16_666666'> <item name='android:textSize'>16.0dip</item> <item name='android:textColor'>#ff666666</item> </style> <style name='sdw_white'> <item name='android:shadowColor'>#7fffffff</item> <item name='android:shadowDx'>0.0</item> <item name='android:shadowDy'>0.65</item> <item name='android:shadowRadius'>1.0</item> </style> <style name='sdw_79351b'> <item name='android:shadowColor'>#ff79351b</item> <item name='android:shadowDx'>0.0</item> <item name='android:shadowDy'>1.0</item> <item name='android:shadowRadius'>1.0</item> </style> <style name='text_15_ffffff_sdw' parent='@style/sdw_79351b'> <item name='android:textSize'>15.0dip</item> <item name='android:textColor'>#ffffffff</item> </style> <style name='text_15_666666_sdw' parent='@style/sdw_white'> <item name='android:textSize'>15.0dip</item> <item name='android:textColor'>#ff666666</item> </style> <style name='Dialog' parent='android:style/Theme.Dialog'> <item name='android:background'>#00000000</item> <item name='android:windowBackground'>@android:color/transparent</item> <item name='android:windowNoTitle'>true</item> <item name='android:windowIsFloating'>true</item> </style> </resources>

自定義Dialog的實現類CustomDialog

package com.dyr.custom; import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView; import com.dyr.view.R; public class CustomDialog extends Dialog { public CustomDialog(Context context) { super(context); } public CustomDialog(Context context, int theme) { super(context, theme); } public static class Builder { private Context context; private String title; private String message; private String positiveButtonText; private String negativeButtonText; private View contentView; private DialogInterface.OnClickListener positiveButtonClickListener; private DialogInterface.OnClickListener negativeButtonClickListener; public Builder(Context context) { this.context = context; } public Builder setMessage(String message) { this.message = message; return this; } /** * Set the Dialog message from resource * * @param title * @return */ public Builder setMessage(int message) { this.message = (String) context.getText(message); return this; } /** * Set the Dialog title from resource * * @param title * @return */ public Builder setTitle(int title) { this.title = (String) context.getText(title); return this; } /** * Set the Dialog title from String * * @param title * @return */ public Builder setTitle(String title) { this.title = title; return this; } public Builder setContentView(View v) { this.contentView = v; return this; } /** * Set the positive button resource and it’s listener * * @param positiveButtonText * @return */ public Builder setPositiveButton(int positiveButtonText, DialogInterface.OnClickListener listener) { this.positiveButtonText = (String) context .getText(positiveButtonText); this.positiveButtonClickListener = listener; return this; } public Builder setPositiveButton(String positiveButtonText, DialogInterface.OnClickListener listener) { this.positiveButtonText = positiveButtonText; this.positiveButtonClickListener = listener; return this; } public Builder setNegativeButton(int negativeButtonText, DialogInterface.OnClickListener listener) { this.negativeButtonText = (String) context .getText(negativeButtonText); this.negativeButtonClickListener = listener; return this; } public Builder setNegativeButton(String negativeButtonText, DialogInterface.OnClickListener listener) { this.negativeButtonText = negativeButtonText; this.negativeButtonClickListener = listener; return this; } public CustomDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // instantiate the dialog with the custom Theme final CustomDialog dialog = new CustomDialog(context,R.style.Dialog); View layout = inflater.inflate(R.layout.dialog_normal_layout, null); dialog.addContentView(layout, new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); // set the dialog title ((TextView) layout.findViewById(R.id.title)).setText(title); // set the confirm button if (positiveButtonText != null) { ((Button) layout.findViewById(R.id.positiveButton)) .setText(positiveButtonText); if (positiveButtonClickListener != null) { ((Button) layout.findViewById(R.id.positiveButton)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { positiveButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } } else { // if no confirm button just set the visibility to GONE layout.findViewById(R.id.positiveButton).setVisibility( View.GONE); } // set the cancel button if (negativeButtonText != null) { ((Button) layout.findViewById(R.id.negativeButton)) .setText(negativeButtonText); if (negativeButtonClickListener != null) { ((Button) layout.findViewById(R.id.negativeButton)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { negativeButtonClickListener.onClick(dialog, DialogInterface.BUTTON_NEGATIVE); } }); } } else { // if no confirm button just set the visibility to GONE layout.findViewById(R.id.negativeButton).setVisibility( View.GONE); } // set the content message if (message != null) { ((TextView) layout.findViewById(R.id.message)).setText(message); } else if (contentView != null) { // if no message set // add the contentView to the dialog body ((LinearLayout) layout.findViewById(R.id.content)) .removeAllViews(); ((LinearLayout) layout.findViewById(R.id.content)) .addView(contentView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)); } dialog.setContentView(layout); return dialog; } }}

使用代碼

CustomDialog.Builder builder = new CustomDialog.Builder(this); builder.setMessage('這個就是自定義的提示框'); builder.setTitle('提示'); builder.setPositiveButton('確定', new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); //設置你的操作事項 } }); builder.setNegativeButton('取消', new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show();

至此,自定義彈出框已經完成,是不是感覺很簡單呢。

這里附上一個自定義彈出框的小項目代碼下載地址:點擊打開鏈接

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 健康管理师报考条件,考试时间,报名入口—首页 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 阿尔法-MDR2000无转子硫化仪-STM566 SATRA拉力试验机-青岛阿尔法仪器有限公司 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 苏州同创电子有限公司 - 四探针测试仪源头厂家 | 焊锡,锡膏,锡线,锡条,焊锡膏-绿志岛金属有限公司 | 立式_复合式_壁挂式智能化电伴热洗眼器-上海达傲洗眼器生产厂家 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | LOGO设计_品牌设计_VI设计 - 特创易 | 楼承板-钢筋楼承板-闭口楼承板-无锡优贝斯楼承板厂 | 微水泥_硅藻泥_艺术涂料_艺术漆_艺术漆加盟-青岛泥之韵环保壁材 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 无锡市珂妮日用化妆品有限公司|珂妮日化官网|洗手液厂家 | 金库门,金库房,金库门厂家,金库门价格-河北特旺柜业有限公司 | 全自动包衣机-无菌分装隔离器-浙江迦南科技股份有限公司 | 山东柳店新能源科技有限公司 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | 招商帮-一站式网络营销服务|互联网整合营销|网络推广代运营|信息流推广|招商帮企业招商好帮手|搜索营销推广|短视视频营销推广 | 超声波反应釜【百科】-以马内利仪器| 热闷罐-高温罐-钢渣热闷罐-山东鑫泰鑫智能热闷罐厂家 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] | 打包箱房_集成房屋-山东佳一集成房屋有限公司 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 上海电子秤厂家,电子秤厂家价格,上海吊秤厂家,吊秤供应价格-上海佳宜电子科技有限公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 517瓜水果特产网|一个专注特产好物的网站 | 高速龙门架厂家_监控杆_多功能灯杆_信号灯杆_锂电池太阳能路灯-鑫世源照明 |