日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

自定义Dialog

發布時間:2025/3/13 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义Dialog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1、直接加載布局
    • 1.1 項目層級
    • 1.2 代碼
      • (1)activity_main.xml
      • (2)dialog.xml
      • (3)MainActivity
    • 1.3 效果圖
  • 2、自定義Dialog
    • 2.1 項目層級
    • 2.2 代碼
      • (1)styles.xml:給Dialog設置一個風格主題(基本都是用這個主題)無邊框全透明背景
      • (2)activity_main.xml
      • (3)dialog.xml:給自定的Dialog設置自定義的 xml界面
      • (4)free_dialog_bg.xml: dialog的自定義背景框如下
      • (5)MainActivity
      • (6)SelfDialog:繼承Dialog實現自定義的Dialog
      • (7)AndroidManifest.xml
    • 2.3 效果圖

1、直接加載布局

1.1 項目層級

1.2 代碼

(1)activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.zz.dialogtest.MainActivity"><Buttonandroid:id="@+id/button_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:text="Button 1"/> </LinearLayout>

(2)dialog.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="160dp"android:layout_height="150dp"android:text="MyDialog"android:textSize="25sp"android:gravity="center"android:textColor="#00ff00"/></LinearLayout>

(3)MainActivity

package com.zz.dialogtest; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//直接創建dialogsetContentView(R.layout.activity_main);Button button1 = (Button) findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.dialog, null);builder.setView(view);builder.create().show();}});

1.3 效果圖

2、自定義Dialog

2.1 項目層級

2.2 代碼

(1)styles.xml:給Dialog設置一個風格主題(基本都是用這個主題)無邊框全透明背景

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style><!--自定義dialog背景全透明無邊框theme --><style name="MyDialog" parent="android:style/Theme.Dialog"><!--背景顏色及和透明程度--><item name="android:windowBackground">@android:color/transparent</item><!--是否去除標題 --><item name="android:windowNoTitle">true</item><!--是否去除邊框--><item name="android:windowFrame">@null</item><!--是否浮現在activity之上--><item name="android:windowIsFloating">true</item><!--是否模糊--><item name="android:backgroundDimEnabled">false</item></style></resources>

(2)activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.zz.mydialog.MainActivity"><Buttonandroid:id="@+id/btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="自定義dialog"android:layout_marginTop="25dp"android:layout_gravity="center"/> </LinearLayout>

(3)dialog.xml:給自定的Dialog設置自定義的 xml界面

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#11ffffff"><LinearLayoutandroid:layout_width="260dp"android:layout_height="wrap_content"android:layout_centerInParent="true"android:background="@drawable/free_dialog_bg"android:orientation="vertical"><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_margin="15dp"android:gravity="center"android:text="消息提示"android:textColor="#38ADFF"android:textSize="16sp" /><TextViewandroid:id="@+id/message"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:text="提示消息" /><Viewandroid:layout_width="match_parent"android:layout_height="1px"android:layout_marginTop="15dp"android:background="#E4E4E4" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal"><Buttonandroid:id="@+id/no"android:layout_width="0dp"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:layout_weight="1"android:background="@null"android:gravity="center"android:singleLine="true"android:text="No"android:textColor="#7D7D7D"android:textSize="16sp" /><Viewandroid:layout_width="1px"android:layout_height="match_parent"android:background="#E4E4E4" /><Buttonandroid:id="@+id/yes"android:layout_width="0dp"android:layout_height="match_parent"android:layout_marginRight="10dp"android:layout_weight="1"android:background="@null"android:gravity="center"android:singleLine="true"android:text="Yes"android:textColor="#38ADFF"android:textSize="16sp" /></LinearLayout></LinearLayout></RelativeLayout>

(4)free_dialog_bg.xml: dialog的自定義背景框如下

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><solid android:color="#ffffff" /><strokeandroid:width="0.8dp"android:color="#ffffff" /><!-- 圓角 --><corners android:radius="6dp" /> </shape>

(5)MainActivity

package com.zz.mydialog;import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Toast;public class MainActivity extends AppCompatActivity {private SelfDialog selfDialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//按鈕點擊事件findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//設置Dialog對話框selfDialog = new SelfDialog(MainActivity.this);selfDialog.setTitle("提示");selfDialog.setMessage("確定退出應用?");//確定按鈕selfDialog.setYesOnclickListener("確定", new SelfDialog.onYesOnclickListener() {@Overridepublic void onYesClick() {Toast.makeText(MainActivity.this,"點擊了--確定--按鈕",Toast.LENGTH_LONG).show();selfDialog.dismiss(); //點擊按鈕后,Dialog對話框立刻消失}});//取消按鈕selfDialog.setNoOnclickListener("取消", new SelfDialog.onNoOnclickListener() {@Overridepublic void onNoClick() {Toast.makeText(MainActivity.this,"點擊了--取消--按鈕",Toast.LENGTH_LONG).show();selfDialog.dismiss(); //點擊按鈕后,Dialog對話框立刻消失}});selfDialog.show(); //顯示Dialog對話框}});} }

(6)SelfDialog:繼承Dialog實現自定義的Dialog

package com.zz.mydialog;import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;/*** 創建自定義的dialog,主要學習其實現原理* Created by chengguo on 2016/3/22.*/ public class SelfDialog extends Dialog {private Button yes;//確定按鈕private Button no;//取消按鈕private TextView titleTv;//消息標題文本private TextView messageTv;//消息提示文本private String titleStr;//從外界設置的title文本private String messageStr;//從外界設置的消息文本//確定文本和取消文本的顯示內容private String yesStr, noStr;private onNoOnclickListener noOnclickListener;//取消按鈕被點擊了的監聽器private onYesOnclickListener yesOnclickListener;//確定按鈕被點擊了的監聽器/*** 設置取消按鈕的顯示內容和監聽** @param str* @param onNoOnclickListener*/public void setNoOnclickListener(String str, onNoOnclickListener onNoOnclickListener) {if (str != null) {noStr = str;}this.noOnclickListener = onNoOnclickListener;}/*** 設置確定按鈕的顯示內容和監聽** @param str* @param onYesOnclickListener*/public void setYesOnclickListener(String str, onYesOnclickListener onYesOnclickListener) {if (str != null) {yesStr = str;}this.yesOnclickListener = onYesOnclickListener;}public SelfDialog(Context context) {super(context, R.style.MyDialog);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dialog);//按空白處不能取消動畫setCanceledOnTouchOutside(false);//初始化界面控件initView();//初始化界面數據initData();//初始化界面控件的事件initEvent();}/*** 初始化界面的確定和取消監聽器*/private void initEvent() {//設置確定按鈕被點擊后,向外界提供監聽yes.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (yesOnclickListener != null) {yesOnclickListener.onYesClick();}}});//設置取消按鈕被點擊后,向外界提供監聽no.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (noOnclickListener != null) {noOnclickListener.onNoClick();}}});}/*** 初始化界面控件的顯示數據*/private void initData() {//如果用戶自定了title和messageif (titleStr != null) {titleTv.setText(titleStr);}if (messageStr != null) {messageTv.setText(messageStr);}//如果設置按鈕的文字if (yesStr != null) {yes.setText(yesStr);}if (noStr != null) {no.setText(noStr);}}/*** 初始化界面控件*/private void initView() {yes = (Button) findViewById(R.id.yes);no = (Button) findViewById(R.id.no);titleTv = (TextView) findViewById(R.id.title);messageTv = (TextView) findViewById(R.id.message);}/*** 從外界Activity為Dialog設置標題** @param title*/public void setTitle(String title) {titleStr = title;}/*** 從外界Activity為Dialog設置dialog的message** @param message*/public void setMessage(String message) {messageStr = message;}/*** 設置確定按鈕和取消被點擊的接口*/public interface onYesOnclickListener {public void onYesClick();}public interface onNoOnclickListener {public void onNoClick();} }

(7)AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zz.mydialog"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

2.3 效果圖



參考:https://www.cnblogs.com/holyday/p/7284394.html

總結

以上是生活随笔為你收集整理的自定义Dialog的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美片一区二区三区 | 色哟哟黄色 | 久久久久久久久久久久久久久久久久久久 | 精品人妻大屁股白浆无码 | 日本激情一区 | 综合色视频| 免费污污视频在线观看 | 黄页网址大全免费观看 | 嫩草影院懂你的 | 久天堂 | 精品小视频| 亚洲福利视频导航 | 精久久久久久 | 中文字幕女优 | 久久香蕉av | 五月天开心激情 | 九九操| 91cn.com| 日本三级视频在线观看 | 色婷av | 91福利视频免费观看 | 176精品免费 | 网站免费黄色 | 亚洲春色在线观看 | 国产精品久久久久久久久毛片 | 亚洲人成免费电影 | av不卡免费在线 | 久久免费国产视频 | 国产精品网友自拍 | 五月天精品视频 | 国产a级免费视频 | 韩国三级久久 | 久在线播放 | a级大片免费看 | 亚洲综合av网| 99热播| 欧美无极品 | 日韩av中文字幕在线免费观看 | 免费中文字幕在线观看 | 小视频国产 | 免费黄色av网站 | 玩弄少妇人妻 | 亚洲品质自拍视频网站 | 欧美youjizz| 人人爽人人爽人人片av | 色狠狠av老熟女 | www.五月婷婷 | 久草婷婷 | 无码人妻av免费一区二区三区 | 91免费看国产 | 色婷婷久久一区二区三区麻豆 | 在线欧美视频 | 毛片网站在线免费观看 | 亚洲精品乱码久久久久久黑人 | 亚洲精品二| 欧美自拍在线 | 欧美大尺度床戏做爰 | 欧美aⅴ | 日韩第四页 | 调教亲女小嫩苞h文小说 | 亚洲天堂av在线播放 | 有奶水的迷人少妇 | 天天色网站 | 日本网站在线看 | 精品成人无码久久久久久 | 成人永久免费视频 | 99超碰在线观看 | 精品不卡一区 | 最新日韩一区 | 久久天堂电影 | 久久久久久少妇 | 好看的av在线 | 国产人人干 | 就爱操av | 日本精品中文字幕 | 国产一级久久 | 欧美成人毛片 | 爱情岛论坛亚洲线路一 | 中文字幕国内自拍 | 中国a一片一级一片 | 美女扒开内裤让男人桶 | 用力使劲高潮了888av | 性欧美高清 | 国产香蕉久久 | 欧美成人性色 | 久草精品视频在线观看 | 国产成年网站 | www中文字幕在线观看 | 中国黄色三级视频 | 国产a级淫片 | 农村妇女毛片 | 久草操| 欧美日韩亚洲不卡 | 久久久精品人妻一区二区三区四 | 2018天天干天天操 | 综合久久久久久久久久久 | 国语对白真实视频播放 | 欧美性做爰毛片 | 边啃奶头边躁狠狠躁 |