当前位置:首页 » 安卓系统 » android的自定义dialog样式

android的自定义dialog样式

发布时间: 2023-05-05 02:46:38

‘壹’ 【Android】自定义全屏dialog

一、在themes.xml中添加自定义dialog的样式

二、创建dialog基类

三、创建自定义dialog的布局

四、创建自定义dialog

五、在activity中使用自定义dialog

‘贰’ android xutils 怎么定义dialog

做Android应用中,最缺少者闭不了的就是自定义Dialog,对于系统默认提供的Dialog样式,一般都不复合应用的样式。
自定义Dialog需要首弯裂3步骤即可:
1、主要的重写Dialog的java
2、自定义布局文件、并设置Dialog Theme,在style.xml文件中加一个即可
3、使用方法

一、创建CustomPopDialog2.java类
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;

/**
* 该自定义Dialog应用闹带在:弹出框居中显示图片,点击其他区域自动关闭Dialog
*
* @author SHANHY([email protected])
* @date 2015年12月4日
*/
public class CustomPopDialog2 extends Dialog {

public CustomPopDialog2(Context context) {
super(context);
}

public CustomPopDialog2(Context context, int theme) {
super(context, theme);
}

public static class Builder {
private Context context;
private Bitmap image;

public Builder(Context context) {
this.context = context;
}

public Bitmap getImage() {
return image;
}

public void setImage(Bitmap image) {
this.image = image;
}

public CustomPopDialog2 create() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final CustomPopDialog2 dialog = new CustomPopDialog2(context,R.style.Dialog);
View layout = inflater.inflate(R.layout.dialog_share_qrcode, null);
dialog.addContentView(layout, new LayoutParams(
android.view.ViewGroup.LayoutParams.WRAP_CONTENT
, android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
dialog.setContentView(layout);
ImageView img = (ImageView)layout.findViewById(R.id.img_qrcode);
img.setImageBitmap(getImage());
return dialog;
}
}
}

这里简单说明下,我们自定义Dialog需要准备一个自己的View布局文件,主要关注create()方法即可,本例中就是直接显示一个图片。

二、自定义View的布局文件、并在style.xml中添加theme
<?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="match_parent"
android:orientation="vertical" android:gravity="center"
android:id="@+id/rootLayout">

<ImageView
android:id="@+id/img_qrcode"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="二维码" />

</LinearLayout>
<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>

三、使用自定义的Dialog
Bitmap bitmap = xxxxx;// 这里是获取图片Bitmap,也可以传入其他参数到Dialog中
CustomPopDialog2.Builder dialogBuild = new CustomPopDialog2.Builder(context);
dialogBuild.setImage(bitmap);
CustomPopDialog2 dialog = dialogBuild.create();
dialog.setCanceledOnTouchOutside(true);// 点击外部区域关闭
dialog.show();

‘叁’ Android algerdialog如何设置样式

Android Studio控件设置样式设置:
在windows7操作系统,Android studio中镇旅使用按照如下步骤设置Android Studio编辑中的代码字体的样式。
1、打开Android studio的设置界面,点击工具的扳手图标
2、在设置搜索栏输入"Font"渣族
3、更改一下设如旅弊置,“Primary font”是更改字体样式,比如“楷体”,“Size”我们可以更改字体的大小,“Line spacing”可以更改行间距
4、更改之后单击“Apply”应用更改,然后单击“OK”

‘肆’ android怎样自定义dialog

你要禅滚什么猜没样的dialog我给你做一个。一般是new一个dialog然后可以设置style。加载dialog的布局。设置dialog相对界面的 位置。dialog当中的空间的监听事贺兆余件。你给个样式我给你做个。

‘伍’ Android开发如何设置Dialog样式

黑色的这个dialog是系统默认的样式,白色的是android4.0以上自带的一个样式,需要在manifest的application中引用@android:style/Theme.Holo.Light这个样式

‘陆’ android 自定义的dialog风格怎么应用到自己的dialog中,要关键的代码

1、在res/value下新建一个CustomTheme.xml文件

  • 重新定义一个CustomDialogTheme的Style,继承系统的Theme.Dialog,然后重写“android:windowBackground”属性和“返唤仔buttonStyle”属性

  • 定义一个CustomTheme的Style,漏汪继承系统的Theme主题,在这个CustomTheme中重新定义dialogTheme项,把其指定为新建的链乱CustomDialogTheme.

2、在Manifest中的application标签下,指定“android:theme”属性为新定义的CustomTheme

----------------------------------------------------------------------------------------------

更多疑问解答,尽在@安卓互助平台新浪微博

‘柒’ 安卓怎么修改系统“DIALOG”风格

1、编写一个文本样式。
DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式:
?


2、设置对弊虚话框的标题主题。

上面的标题文本并不能直接设置为对话框的标题样式。 我们还需要编写一个表示标题的主题的style,在这里指定标题的文本样式。代码如下:

?



3、设置对话框主题。

接下来,我们编写我们的对话框主题,在这里指定标题的主题。由于一些属性并不是public的,所以我们需要继承自原来的某个style,代码如下:

?




4、自定义App的主题。

接下来,我们需要在我们的App theme中指定我们的对话框使用这种主题,所以需要定义一个App theme。同样由于App theme的许多属性并不是public的(比如下面要提到的标题下面的那条蓝线),所以我们要继承自一个原生的style。这里我根据程序需要选择了Theme.Holo.Light.NoActionBar,代码如下:

?


5、指定App主题。

最后一步,我们需要在AndroidManifest.xml文件中,指定我们的app主题。这步很简单,只需要在application标签中指定android:theme的值即可,如下:

?

android:theme="@style/ParkingTheme"

不过这只是指定了Dialog的主题。如果是通过AlertDialog创建出来的对话框,主题还是原来的。所以我们还需要以下步骤。

7、编写AlertDialog主题。
我们无法直接继承系统主题里的AlertDialog的style。如把parent指定为Theme.DeviceDefault.Dialog.Alert,Theme.Holo.Dialog.Alert,Theme.DeviceDefault.Light.Dialog.Alert或Theme.Holo.Light.Dialog.Alert,都会导致编译不过。所以我们需要继承自Dialog的style。在这里我以Theme.Holo.Light.Dialog为例,代码如下:




在这里我参考了原生的alertDialog的style,设定了窗口背景为透明,以及windowContentOverlay为null这两个重要属性,否则你会看到在AlertDialog下面还有一层对话框的背景,或者是对话框的背景遮住了所有内容这样的问题存在。


8、指定AlertDialog的主题。

我们需要在第4步所说的自定义的AppTheme中,添加一行代码来指定要使用的AlertDialog的style,代码如下:

?
@style/Theme.DeviceDefault.Dialog.Alert

9、修改标题下面的蓝色线。


如果你修改了对话框的主题颜色,那么标题下面的蓝色的线肯定会让你很郁闷。如果对话框较少,你可以选择隐藏标题,然后自定义一个包含了标题的View来设置为对话框的内容。但是如果你的对话框有许多种,判悔而且本来都是可以调用原来的API就来生成的话,要去定义这么多个带标题的view,这样做下来心里肯定是很纠结的。

标题下面的蓝色的线,并不是在Dialog或AlertDialog中设置或通过它们的style中定义的。它是定义在各种风格的dialog的layout当中,然后再在AppTheme里面指掘卜正定dialog的对应属性。遗憾的是,目前我看到这几个相关属性还不是public的,不能自己设置,所以只有通过Java代码来实现了。

表示这条蓝色的线的叫做titleDivider,我们可以通过getResources()的API来获取它的IP,然后设置颜色。代码如下:

?
public static final void dialogTitleLineColor(Dialog dialog, int color) {
Context context = dialog.getContext();
int divierId = context.getResources().getIdentifier("android:id/titleDivider", null, null);
View divider = dialog.findViewById(divierId);
divider.setBackgroundColor(color);
}这行代码对于自定义的Dialog,可以在setContentView之后调用。但是对于AlertDialog,必须在show()方法被调用之后才可以去调用,否则会报错。

‘捌’ Android 详解自定义简洁大方的Dialog

在android开发中常常会出现用户手机系统版本不同,导致默认的弹窗样式也会不同;或者是系统弹窗跟UI设计的界面风格不搭的现象,这时候就需要我们自定义弹窗风格样式,才能做到弹窗统一,画风和谐效果。现在我们就来学习如何自定义Dialog弹窗。

先看看自定义Dialog的效果图:

可以看到Button按钮的背景是白色的并带有圆角,这个效果可以让UI设计师提供背景图片,也可以用shape绘制。

1.1在drawable下新建bg_radius_top_white_8.xml文件绘制背景,比如拨打电话的背景:

1.2如果需要统一设置按钮的宽,高,颜色液高,字体,可以在styles.xml中设置,在dialog_layout.xml布局引用,闹陪尺如下图:

2.1在colors.xml中设置颜色:

3.1新建资源文件夹命名为anim,并新建动画的xml文件:

3.2 弹窗进入时(从底部垂直进入,动画持续300毫秒),如下乱态图

3.3 弹窗退出时的布局是dialog_exit.xml(从底部垂直退出到手机屏幕外,动画持续300毫秒)

3.4同样在styles.xml设置:

最后在MainActivity中调用一下,就能看到效果了。

完整demo地址: https://github.com/yanhuomatou2015/CustomDialogDemo

今天的分享结束了,再见~

‘玖’ android怎样自定义dialog

Android开发过程中,常常会遇到一些需求场景——在界面上弹出一个弹框,对用户进行提醒并让用户进行某些选择性的操作,
如退出登录时的弹窗,让用户选择“退出”还是“取消”等操作。
Android系统提供了Dialog类,以及Dialog的子类,常见如AlertDialog来实现此类功能。
一般情况下,利用Android提供的Dialog及其子类能够满足多数此类需求,然而,其不足之处体现在:
1. 基于Android提供的Dialog及其子类样式单一,风格上与App本身风格可能不太协调;
2. Dialog弹窗在布局和功能上有所限制,有时不一定能满足实际的业务需求。
本文将通过在Dialog基础上构建自定义的Dialog弹窗,以最常见的确认弹框为例。
本样式相对比较简单:上面有一个弹框标题(提示语),下面左右分别是“确认”和“取消”按钮,当用户点击“确认”按钮时,弹框执行
相应的确认逻辑,当点击“取消”按钮时,执行相应的取消逻辑。
首先,自定义弹框样式:

1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="wrap_content"
5 android:background="@drawable/dialog_bg"
6 android:orientation="vertical" >
7
8 <TextView
9 android:id="@+id/title"
10 android:layout_width="wrap_content"
11 android:layout_height="wrap_content"
12 android:layout_gravity="center"
13 android:paddingTop="14dp"
14 android:textColor="@color/login_hint"
15 android:textSize="@dimen/text_size_18" />
16
17 <LinearLayout
18 android:layout_width="match_parent"
19 android:layout_height="wrap_content"
20 android:layout_marginBottom="14dp"
21 android:layout_marginLeft="20dp"
22 android:layout_marginRight="20dp"
23 android:layout_marginTop="30dp" >
24
25 <TextView
26 android:id="@+id/confirm"
27 android:layout_width="wrap_content"
28 android:layout_height="wrap_content"
29 android:layout_marginRight="10dp"
30 android:layout_weight="1"
31 android:background="@drawable/btn_confirm_selector"
32 android:gravity="center"
33 android:textColor="@color/white"
34 android:textSize="@dimen/text_size_16" />
35
36 <TextView
37 android:id="@+id/cancel"
38 android:layout_width="wrap_content"
39 android:layout_height="wrap_content"
40 android:layout_marginLeft="10dp"
41 android:layout_weight="1"
42 android:background="@drawable/btn_cancel_selector"
43 android:gravity="center"
44 android:textColor="@color/login_hint"
45 android:textSize="@dimen/text_size_16" />
46 </LinearLayout>
47
48 </LinearLayout>

然后,通过继承Dialog类构建确认弹框控件ConfirmDialog:

1 package com.corn.widget;
2
3 import android.app.Dialog;
4 import android.content.Context;
5 import android.os.Bundle;
6 import android.util.DisplayMetrics;
7 import android.view.LayoutInflater;
8 import android.view.View;
9 import android.view.Window;
10 import android.view.WindowManager;
11 import android.widget.TextView;
12
13 import com.corn.R;
14
15 public class ConfirmDialog extends Dialog {
16
17 private Context context;
18 private String title;
19 private String confirmButtonText;
20 private String cacelButtonText;
21 private ClickListenerInterface clickListenerInterface;
22
23 public interface ClickListenerInterface {
24
25 public void doConfirm();
26
27 public void doCancel();
28 }
29
30 public ConfirmDialog(Context context, String title, String confirmButtonText, String cacelButtonText) {
31 super(context, R.style.MyDialog);
32 this.context = context;
33 this.title = title;
34 this.confirmButtonText = confirmButtonText;
35 this.cacelButtonText = cacelButtonText;
36 }
37
38 @Override
39 protected void onCreate(Bundle savedInstanceState) {
40 // TODO Auto-generated method stub
41 super.onCreate(savedInstanceState);
42
43 init();
44 }
45
46 public void init() {
47 LayoutInflater inflater = LayoutInflater.from(context);
48 View view = inflater.inflate(R.layout.confirm_dialog, null);
49 setContentView(view);
50
51 TextView tvTitle = (TextView) view.findViewById(R.id.title);
52 TextView tvConfirm = (TextView) view.findViewById(R.id.confirm);
53 TextView tvCancel = (TextView) view.findViewById(R.id.cancel);
54
55 tvTitle.setText(title);
56 tvConfirm.setText(confirmButtonText);
57 tvCancel.setText(cacelButtonText);
58
59 tvConfirm.setOnClickListener(new clickListener());
60 tvCancel.setOnClickListener(new clickListener());
61
62 Window dialogWindow = getWindow();
63 WindowManager.LayoutParams lp = dialogWindow.getAttributes();
64 DisplayMetrics d = context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用
65 lp.width = (int) (d.widthPixels * 0.8); // 高度设置为屏幕的0.6
66 dialogWindow.setAttributes(lp);
67 }
68
69 public void setClicklistener(ClickListenerInterface clickListenerInterface) {
70 this.clickListenerInterface = clickListenerInterface;
71 }
72
73 private class clickListener implements View.OnClickListener {
74 @Override
75 public void onClick(View v) {
76 // TODO Auto-generated method stub
77 int id = v.getId();
78 switch (id) {
79 case R.id.confirm:
80 clickListenerInterface.doConfirm();
81 break;
82 case R.id.cancel:
83 clickListenerInterface.doCancel();
84 break;
85 }
86 }
87
88 };
89
90 }

在如上空间构造代码中,由于控件的"确认"和"取消"逻辑与实际的应用场景有关,因此,控件中通过定义内部接口来实现。

在需要使用此控件的地方,进行如下形式调用:

1 public static void Exit(final Context context) {
2 final ConfirmDialog confirmDialog = new ConfirmDialog(context, "确定要退出吗?", "退出", "取消");
3 confirmDialog.show();
4 confirmDialog.setClicklistener(new ConfirmDialog.ClickListenerInterface() {
5 @Override
6 public void doConfirm() {
7 // TODO Auto-generated method stub
8 confirmDialog.dismiss();
9 //toUserHome(context);
10 AppManager.getAppManager().AppExit(context);
11 }
12
13 @Override
14 public void doCancel() {
15 // TODO Auto-generated method stub
16 confirmDialog.dismiss();
17 }
18 });
19 }

调用中实现了此控件的内部接口,并赋给控件本身,以此在点击按钮时实现基于外部具体业务逻辑的函数回调。

‘拾’ android:自定义Dialog(通用)

自定义Dialog是一个非常常见的需求,Dialog上可以显示图标,或者标题,显示1个或者2个两个按钮。

效果如下:

先定义Dialog样式:

再去定义对话框的布局,首先来个圆角背景:

布局:

最后送上Dialog源码

好了,下面就是使用了:

热点内容
python回测框架 发布:2025-05-19 23:19:28 浏览:724
单片机的压缩算法 发布:2025-05-19 23:18:06 浏览:272
电脑怎么配置桌面分区 发布:2025-05-19 23:15:23 浏览:655
房车里的鸡肋配置有哪些 发布:2025-05-19 23:13:41 浏览:610
溯源码平台 发布:2025-05-19 22:59:37 浏览:251
c语言课程报告 发布:2025-05-19 22:52:38 浏览:237
编程软件e 发布:2025-05-19 22:51:00 浏览:128
手机壁纸安卓app哪个最好用 发布:2025-05-19 22:50:06 浏览:47
mysqllinux安装 发布:2025-05-19 22:42:55 浏览:358
android开发必备 发布:2025-05-19 22:36:08 浏览:889