日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

android自定義彈出框樣式的實現(xiàn)方法

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

前言:

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

廢話不說先上圖片:

android自定義彈出框樣式的實現(xiàn)方法

實現(xiàn)機制

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

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

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的實現(xiàn)類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();

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

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

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

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩激情一区| 亚洲资源网站| 麻豆精品在线播放| 国产精品国码视频| 国产欧美91| 久久久久久亚洲精品美女| 国产精品羞羞答答在线观看| 国产日韩欧美一区二区三区| 国产欧美91| 精品国产a一区二区三区v免费| 久久久久久亚洲精品美女| 国产成人精品一区二区三区免费 | 美女精品一区| 亚洲久久一区| 日韩av影院| 欧美国产精品| 日韩一区电影| 欧美精品羞羞答答| 六月婷婷一区| 91成人精品在线| 久久97视频| 91精品一区二区三区综合| 亚洲精品极品少妇16p| 在线精品一区二区| 国产精品一二| 日韩欧美在线中字| 亚洲特级毛片| 最新亚洲国产| 国产精品综合色区在线观看| 免费一区二区三区在线视频| 日韩在线不卡| 男女精品网站| 国产精品一区2区3区| 美女网站视频一区| 久久av在线| 国产伦精品一区二区三区视频| 国产一区二区三区四区二区| 精品三级久久| 三级欧美韩日大片在线看| 国产精品一区三区在线观看| 日韩欧美一区二区三区在线视频 | 中文久久精品| 欧美精品国产一区| 亚洲播播91| 亚洲人亚洲人色久| 精品精品99| 欧美日韩国产高清| 欧美一区影院| 成人啊v在线| 日韩av一二三| 高清av不卡| 亚洲欧美日本国产| 麻豆91精品视频| 免费观看久久av| 日韩二区三区在线观看| 日韩亚洲一区在线| 91亚洲无吗| 亚洲精品一级二级| 欧美精品三级在线| 亚洲无线一线二线三线区别av| 日韩精品欧美精品| 中文字幕在线视频网站| 日韩毛片网站| 欧美+亚洲+精品+三区| 国产精品4hu.www| 午夜久久一区| 国产一区二区三区四区二区| 美女网站久久| 在线一区av| 97久久中文字幕| 黄色欧美日韩| 欧美国产美女| 国产亚洲高清在线观看| 欧美日韩精品一本二本三本| 久久中文精品| 日本综合视频| 在线亚洲观看| 日韩在线观看一区| 国产劲爆久久| 日韩高清三区| 欧美日韩日本国产亚洲在线| 日韩av自拍| 日韩av影院| 首页亚洲欧美制服丝腿| 久久久久久黄| 国产成人免费| 国产精品17p| 欧美精品影院| 日韩综合小视频| 日韩在线一区二区| 在线日韩电影| 国产白浆在线免费观看| 国产精品久久久久久久免费软件| 亚洲精选av| 亚洲一区免费| 不卡一区综合视频| 中文另类视频| 国产精品久久观看| 国产精品一区二区三区av | 亚洲免费高清| 999久久久免费精品国产| 六月丁香综合在线视频| 国产欧美丝祙| 日韩va亚洲va欧美va久久| 亚洲一区有码| 亚洲欧美日本日韩| 欧美日韩免费观看一区=区三区| 人人香蕉久久| 日韩欧美不卡| 中文在线中文资源| 黄色aa久久| 久久精品九色| 国产亚洲一区二区三区不卡| 日韩黄色在线观看| 免费观看在线色综合| 国产免费成人| 亚洲一区欧美激情| 亚洲一区二区三区高清不卡| 黄色国产精品| 欧美精品九九| 亚洲欧美日韩国产一区二区| 不卡av一区二区| 亚洲欧美日韩高清在线| 国产一区日韩一区| 亚洲调教视频在线观看| 五月天久久网站| 久久久成人网| 激情五月综合| 亚洲欧美日韩精品一区二区| 麻豆亚洲精品| 日韩有码av| 欧美亚洲人成在线| 国产精品激情| 精品国产欧美| 桃色av一区二区| а√天堂中文在线资源8| 亚洲天堂免费电影| 999精品在线| 在线亚洲精品| 色综合视频一区二区三区日韩 | 欧美精品国产一区| 欧美啪啪一区| 久久久亚洲欧洲日产| 国产一区丝袜| 久久久777| 红桃视频国产精品| 蜜桃久久av一区| 亚洲va久久| 欧美久久亚洲| 国产66精品| 久久久噜噜噜| 最新日韩欧美| 婷婷综合福利| 国产日产一区| 国产一区二区三区精品在线观看| 国产一区一一区高清不卡| 日韩大片免费观看| 国产精品日本| 综合视频一区| 久久影视三级福利片| 亚洲www啪成人一区二区| av不卡在线看| 国产欧美日韩一区二区三区四区 | 国产视频一区在线观看一区免费| 一区免费视频| 97久久中文字幕| 国产理论在线| 性欧美长视频| 国产精品videossex久久发布| 欧美韩日一区| 午夜电影亚洲| 国产丝袜一区| 亚洲成人va| 综合亚洲视频| 精品一区二区三区中文字幕视频| 日本精品在线中文字幕| 三级亚洲高清视频| 欧美日韩99| se01亚洲视频 | 久久精品xxxxx| 97国产成人高清在线观看| 久久视频一区| 日韩国产一二三区| 日本免费久久| aa国产精品| 精品色999| 亚洲欧美日韩国产一区| 欧美激情亚洲| 亚洲欧美久久久| 福利在线免费视频| 亚洲视频国产| 毛片在线网站| 美女91精品| 国产精品国产一区| 亚洲一区有码| 久久精品观看| 欧美日韩夜夜| 婷婷综合五月| 国产一区调教| 久久av一区二区三区|