杭州定制网站建设,网店美工的工作内容,给别人做的网站要复杂做安全扫描,国外免费可以做网站的服务器目录
Android Toast 吐司
常量
常用方法
例子
Android Notification 状态栏通知
Notification 的基本布局
扩展布局
Notification ( 状态栏通知 )
相关的方法
例子#xff1a;
参考文档
Android AlertDialog 弹出框
Android Dialog 继承图谱
AlertDialog
几种常…目录
Android Toast 吐司
常量
常用方法
例子
Android Notification 状态栏通知
Notification 的基本布局
扩展布局
Notification ( 状态栏通知 )
相关的方法
例子
参考文档
Android AlertDialog 弹出框
Android Dialog 继承图谱
AlertDialog
几种常用的对话框
普通对话框例子
普通列表对话框例子
单选列表对话框例子
多选列表对话框例子
参考文档 Android Toast 吐司
Android 中的 Toast 是一种轻量级的消息提示框用于在屏幕上显示简短的通知消息通常用于向用户提供一些临时性的信息反馈。Toast 不包含任何按钮也不需要用户交互它会在屏幕上显示一段时间后自动消失。而且Toast 是为数不多的没有 XML 创建代码的 UI 控件。
常量
在 Android 中Toast 类定义了两个常量 LENGTH_LONG 和 LENGTH_SHORT用于表示 Toast 消息显示的持续时间。这两个常量分别表示显示较长时间和显示较短时间。
LENGTH_LONG 表示 Toast 消息将会显示较长时间。LENGTH_SHORT 表示 Toast 消息将会显示较短时间。
可以根据自己的需要选择适当的持续时间来显示 Toast 消息。除了使用这两个常量外你也可以使用 Toast.setDuration(int duration) 方法来自定义持续时间传入的参数是以毫秒为单位的时间值。
常用方法
void cancel(): 如果 Toast 已经显示则关闭 Toast如果 Toast 还未显示则取消显示。void show(): 显示 Toast 消息。int getDuration(): 返回当前 Toast 消息的持续时间。int getGravity(): 获取 Toast 应显示在屏幕上的位置。float getHorizontalMargin(): 返回水平边距。float getVerticalMargin(): 返回垂直边距。View getView(): 返回 Toast 的 View。int getXOffset(): 以像素为单位返回 X 偏移量。int getYOffset(): 以像素为单位返回 Y 偏移量。static Toast makeText(Context context, int resId, int duration): 创建 Toast 用于显示给定的资源。static Toast makeText(Context context, CharSequence text, int duration): 创建 Toast 用于显示给定的文本。void setDuration(int duration): 设置 Toast 的显示时间。void setGravity(int gravity, int xOffset, int yOffset): 设置 Toast 在屏幕上显示的位置。void setMargin(float horizontalMargin, float verticalMargin): 设置视图的边距。void setText(int resId): 用一个资源更新 Toast 要显示的文本或资源。void setText(CharSequence s): 用一段文本更新 Toast 要显示的文本或资源。void setView(View view): 设置要显示的视图。
例子
package com.example.myapplication;import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 创建并显示一个简单的 Toast 消息showToast(这是一个简单的 Toast 消息);// 创建并显示一个自定义位置和持续时间的 Toast 消息showToastCustom(这是一个自定义位置和持续时间的 Toast 消息, Gravity.TOP | Gravity.CENTER_HORIZONTAL, Toast.LENGTH_LONG);// 创建并显示一个包含自定义视图的 Toast 消息showCustomViewToast();}// 创建并显示一个简单的 Toast 消息private void showToast(String message) {Toast.makeText(this, message, Toast.LENGTH_SHORT).show();}// 创建并显示一个自定义位置和持续时间的 Toast 消息private void showToastCustom(String message, int gravity, int duration) {Toast toast Toast.makeText(this, message, duration);toast.setGravity(gravity, 0, 0);toast.show();}// 创建并显示一个包含自定义视图的 Toast 消息private void showCustomViewToast() {Toast toast new Toast(this);toast.setDuration(Toast.LENGTH_SHORT);// 创建一个 TextView 作为 Toast 的视图TextView textView new TextView(this);textView.setText(自定义视图的 Toast 消息);textView.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));textView.setTextColor(getResources().getColor(android.R.color.white));textView.setPadding(20, 20, 20, 20);toast.setView(textView);toast.show();}
}Android Notification 状态栏通知
通知栏通知Notification在现代智能手机中非常常见用户经常会从屏幕顶部往下滑查看通知的内容。通知栏通知是一种用于向用户显示重要信息或提醒的方式通常用于显示来自应用程序的消息、提醒、更新等。
通过通知栏通知用户可以方便地了解到新的消息、事件或提醒而不必打开应用程序。通知通常包括标题、内容、图标以及可能的操作按钮用户可以通过点击通知来执行相应的操作比如打开应用程序、查看详细信息等。
通知栏通知在移动应用程序中的应用非常广泛例如社交应用程序、邮件应用程序、新闻应用程序等都会使用通知来及时通知用户相关信息。它是一种非常重要的用户交互方式能够提高用户体验并使用户更容易地与应用程序进行互动。
Notification 的基本布局
通知Notification的基本布局通常包括以下组成元素
Icon/Photo大图标通知的大图标用于表示通知的来源或者类型。通常是应用程序的图标或者相关图片。Title/Name标题通知的标题用于简要描述通知的内容或者来源。通常会放置在通知的顶部。Message内容信息通知的详细内容或者信息。通常是通知的主要内容可以是文本、图片、链接等。Timestamp通知时间通知的时间戳即通知被创建或发送的时间。默认情况下通知的时间是通知被创建的时间但也可以通过 setWhen() 方法来设置自定义的时间。Secondary Icon小图标通知中的一个较小的图标通常用于补充说明或者表示附加信息。比如通知来自某个应用程序小图标可能是该应用程序的标志性图标。内容文字在小图标的左侧或者上方的一个文字用于描述通知的附加信息例如通知的类别或者状态等。
扩展布局
在 Android 中通知可以使用扩展布局来显示更多内容包括消息的前几行或者图片的预览从而让用户能够在通知栏中更方便地浏览更多信息。
Android 提供了两种常见的扩展布局供开发者使用 文本扩展布局文本扩展布局允许在通知中显示更多的文字内容。通过文本扩展布局你可以展示更多的消息内容让用户在通知栏中浏览到整个消息的内容或者更多的相关信息。 图像扩展布局图像扩展布局允许在通知中显示图片的预览。通过图像扩展布局你可以在通知中显示图片的缩略图或者预览图让用户能够在通知栏中快速浏览到图片内容。
Notification ( 状态栏通知 )
在 Android 中状态栏通知主要涉及到两个类Notification 和 NotificationManager。
Notification通知信息类Notification 类用于定义通知的各种属性包括通知的图标、标题、内容、声音、震动、点击行为等。通过设置 Notification 对象的属性开发者可以创建具有不同特性和行为的通知。Notification 类中的属性对应着通知栏的各个部分可以通过构建一个 Notification 对象来创建一条通知。NotificationManager状态栏通知管理类NotificationManager 类是用于管理状态栏通知的管理类负责发出通知、更新通知、清除通知等操作。开发者通过 NotificationManager 对象来发送创建好的通知并对通知进行管理。通常每个应用程序都有自己的 NotificationManager 实例用于管理其自己的通知。
以下是这两个类的主要作用
Notification 类
用于定义通知的各种属性如图标、标题、内容等。可以设置通知的行为如点击通知时打开某个 Activity 或者执行某个 Intent。通过创建 Notification 对象可以构建具体的通知内容。
NotificationManager 类
用于发出通知即将创建好的通知显示在状态栏上。可以更新已有的通知例如更改通知的内容、图标等。可以取消通知即清除状态栏上的通知。
使用的基本流程
1、获取 NotificationManager 对象
NotificationManager notificationManager (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);2、创建 Notification.Builder 对象
Notification.Builder builder new Notification.Builder(context);3、设置通知的属性通过 Notification.Builder 对象设置通知的各种属性如标题、内容、图标、声音、震动、点击行为等。例如
builder.setContentTitle(标题).setContentText(内容).setSmallIcon(R.drawable.icon).setAutoCancel(true); // 点击通知后自动取消通知4、构建 Notification 对象
Notification notification builder.build();5、发送通知使用 NotificationManager 对象的 notify() 方法发送通知。指定一个唯一的通知 ID以便后续对该通知进行更新或取消。
int notificationId 1; // 通知 ID
notificationManager.notify(notificationId, notification);6、取消通知如果需要取消通知可以调用 NotificationManager 对象的 cancel() 方法并传入对应的通知 ID。
notificationManager.cancel(notificationId);相关的方法
1、setContentTitle(CharSequence): 设置通知标题。
2、setContentText(CharSequence): 设置通知内容。
3、setSubText(CharSequence): 设置通知的额外小行文字API 16才可用。
4、setTicker(CharSequence): 设置通知到达时在顶部显示的文字信息。
5、setWhen(long): 设置通知时间通常使用当前系统时间。
6、setSmallIcon(int): 设置通知右下角的小图标同时通知栏的左侧也会显示这个小图标。
7、setLargeIcon(Bitmap): 设置通知左侧的大图标。
8、setAutoCancel(boolean): 设置是否点击通知后自动取消通知默认不取消。
9、setDefaults(int): 用于向通知添加默认的提醒效果包括声音、闪灯和振动。你可以通过组合多个属性来设置通知的默认提醒效果。以下是可用的默认属性
Notification.DEFAULT_VIBRATE: 添加默认的振动提醒。Notification.DEFAULT_SOUND: 添加默认的声音提醒。Notification.DEFAULT_LIGHTS: 添加默认的三色灯提醒。Notification.DEFAULT_ALL: 添加默认的以上三种全部提醒效果。
10、setVibrate(long[]): 用于设置通知的振动方式。
传入一个 long 类型的数组作为参数数组中的元素依次表示振动的延迟时间和振动持续时间。数组中的第一个元素表示振动开始之前的延迟时间后续的元素交替表示振动持续时间和停止时间。
比如
builder.setVibrate(new long[] {0, 300, 500, 700});
这样设置后当通知到达时会按照指定的振动方式进行振动即先延迟 0 毫秒然后振动 300 毫秒接着延迟 500 毫秒最后振动 700 毫秒。
11、setLights(int argb, int onMs, int offMs): 设置通知的三色灯效果。参数依次是灯光的颜色以 ARGB 格式表示亮的持续时间以毫秒为单位暗的持续时间以毫秒为单位。
argb灯光的颜色使用 ARGB 格式表示即一个 32 位的颜色值其中包括透明度A、红色R、绿色G和蓝色B分量。onMs灯光亮起的持续时间以毫秒为单位。offMs灯光暗下去的持续时间以毫秒为单位。
需要注意的是并不是所有的颜色都能够被所有的设备所支持。有些设备可能不带有三色灯或者只支持特定颜色。另外一些设备可能会忽略一些颜色分量只显示红色和绿色而忽略蓝色分量。
此外要使三色灯提醒生效还需要为 Notification 设置 flags 为 Notification.FLAG_SHOW_LIGHTS。这样才能确保通知到达时三色灯会亮起提醒用户。
比如
builder.setLights(Color.RED, 1000, 1000);
这样设置后当通知到达时设备的三色灯会以红色亮起每次亮起持续 1000 毫秒然后熄灭 1000 毫秒以此重复。
12、setSound(Uri): 设置接收到通知时的铃声。你可以使用系统默认的铃声也可以自定义铃声。
以下是几种常见的设置方式
获取默认铃声你可以使用 setDefaults(Notification.DEFAULT_SOUND) 来设置通知的默认铃声。这将使用系统默认的铃声来提醒用户。获取自定义铃声如果你有自定义的铃声文件你可以通过指定铃声文件的 Uri 来设置通知的铃声。例如builder.setSound(Uri.parse(file:///sdcard/xx/xx.mp3));获取 Android 多媒体库内的铃声也可以从 Android 多媒体库内获取铃声。例如使用 Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, 5) 来获取多媒体库中的第五个铃声。
13、setOngoing(boolean): 设置通知是否为一个正在进行的通知。当参数为 true 时表示该通知是一个正在进行的通知通常用于表示用户正在进行的任务或者需要持续显示在通知栏中的通知例如音乐播放器的通知、正在进行的文件下载、同步操作或者主动网络连接等。
通常情况下正在进行的通知会显示在通知栏的顶部不会被用户手动清除直到相应的任务完成或者用户主动取消。这样可以确保用户可以随时了解到当前任务的状态而不会因为误操作或者其他原因而意外关闭通知。
14、setProgress(int, int, boolean): 用于设置通知中的进度条。该方法的参数依次为进度条的最大数值、当前进度以及进度条是否为不确定的。
max进度条的最大数值。progress当前的进度值。indeterminate进度条是否为不确定的。如果为 true则表示进度条为不确定的如果为 false则表示进度条为确定的。
当进度条为确定的时候通常用于表示一个正在进行的任务的进度。你可以调用 setProgress(max, progress, false) 来设置通知的进度条并在任务进行中不断更新进度值直到任务完成后移除进度条。
当进度条为不确定的时候通常用于表示一个持续活动正在进行中但无法准确获知进度的情况。你可以调用 setProgress(0, 0, true) 来设置通知的进度条为不确定的在操作结束时调用 setProgress(0, 0, false) 并更新通知以移除进度条。
15、setContentIntent(PendingIntent): 用于设置通知的点击行为即当用户点击通知时将要执行的操作。通常情况下会使用 PendingIntent 来启动一个 Activity、Service 或者 Broadcast。PendingIntent 相比于直接使用 Intent它可以设置执行次数主要用于远程服务通信、闹铃、通知、启动器、短信等场景。
启动 Activity使用 PendingIntent.getActivity() 方法来获取 PendingIntent其中第四个参数表示 PendingIntent 的位标识符可以使用以下值之一
FLAG_ONE_SHOT: 表示返回的 PendingIntent 仅能执行一次执行完后自动取消。FLAG_NO_CREATE: 表示如果描述的 PendingIntent 不存在则不创建相应的 PendingIntent而是返回 null。FLAG_CANCEL_CURRENT: 表示相应的 PendingIntent 已经存在则取消前者然后创建新的 PendingIntent。FLAG_UPDATE_CURRENT: 表示更新 PendingIntent。
16、setPriority(int): 设置通知的优先级。根据通知的重要性和紧急程度你可以选择不同的优先级来提醒用户。
以下是几种常见的优先级
Notification.PRIORITY_MAX用于表示重要且紧急的通知通知用户这个事件是时间上紧迫的或者需要立即处理的。Notification.PRIORITY_HIGH用于重要的通信内容例如短消息或者聊天这些都是对用户来说比较有兴趣的。Notification.PRIORITY_DEFAULT默认优先级用于没有特殊优先级分类的通知。Notification.PRIORITY_LOW用于通知用户但不是很紧急的事件。Notification.PRIORITY_MIN用于后台消息例如天气或者位置信息。最低优先级通知将只在状态栏显示图标只有用户下拉通知抽屉才能看到内容。
例子
1、修改activity_main.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/btn_show_notificationandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text弹出通知/Buttonandroid:idid/btn_clear_notificationandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text清除通知android:layout_marginTop16dp/
/LinearLayout2、修改MainActivity.java
package com.example.myapplication;import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.NotificationCompat;public class MainActivity extends AppCompatActivity {private static final String CHANNEL_ID my_channel_id;private static final int NOTIFICATION_ID 1;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);createNotificationChannel();Button btnShowNotification findViewById(R.id.btn_show_notification);Button btnClearNotification findViewById(R.id.btn_clear_notification);btnShowNotification.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {showNotification();}});btnClearNotification.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {clearNotification();}});}private void createNotificationChannel() {if (Build.VERSION.SDK_INT Build.VERSION_CODES.O) {CharSequence name getString(R.string.channel_name);String description getString(R.string.channel_description);int importance NotificationManager.IMPORTANCE_DEFAULT;NotificationChannel channel new NotificationChannel(CHANNEL_ID, name, importance);channel.setDescription(description);NotificationManager notificationManager getSystemService(NotificationManager.class);notificationManager.createNotificationChannel(channel);}}private void showNotification() {Intent intent new Intent(this, TargetActivity.class);PendingIntent pendingIntent PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE);NotificationCompat.Builder builder new NotificationCompat.Builder(this, CHANNEL_ID).setSmallIcon(R.drawable.meimei).setContentTitle(我的通知).setContentText(点击查看详情).setContentIntent(pendingIntent).setAutoCancel(true);NotificationManager notificationManager getSystemService(NotificationManager.class);notificationManager.notify(NOTIFICATION_ID, builder.build());}private void clearNotification() {NotificationManager notificationManager getSystemService(NotificationManager.class);notificationManager.cancel(NOTIFICATION_ID);}
}3、创建TargetActivity.java
package com.example.myapplication;import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;public class TargetActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_target);}
}
4、创建activity_target.xml
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationvertical TextViewandroid:idid/notify_detailandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:text这是通知详情页 //LinearLayout
5、更新AndroidManifest.xml
application...activity android:name.MainActivityintent-filteraction android:nameandroid.intent.action.MAIN/category android:nameandroid.intent.category.LAUNCHER//intent-filter/activityactivity android:name.TargetActivity/activity/application
现在当用户点击“弹出通知”按钮时应用会创建并显示一个通知。用户点击这个通知后应用会打开TargetActivity页面。点击“清除通知”按钮则会移除已显示的通知。
参考文档 设计思想 Notifications in Android 4.4 and Lower API文档 Notification Notification.Builder 官方 API 文档
Android AlertDialog 弹出框
在Android开发中AlertDialog是一种弹出框对话框用于显示信息、提示用户决策或收集用户输入。它可以包含标题、内容、按钮如确认、取消等元素。
Android Dialog 继承图谱
在Android中Dialog是一个基本的类用于创建各种类型的对话框。Dialog类位于android.app包中。有几个常用的对话框类都是直接或间接地继承自Dialog类。下面是一个简化的继承图谱展示了Dialog类及其一些重要的子类和相关类
android.content.DialogInterface
└── android.app.Dialog└── android.app.AlertDialog├── android.app.DatePickerDialog├── android.app.TimePickerDialog└── android.app.ProgressDialog (APl26,已废弃)AlertDialog
AlertDialog在Android中是一个特殊的UI组件它的创建和使用方式与大多数其他UI控件有所不同。AlertDialog不能直接通过new关键字实例化也不能在XML布局文件中定义。相反我们使用AlertDialog的一个内部类即AlertDialog.Builder来构建和配置对话框。这种设计模式称为建造者模式Builder Pattern它可以帮助我们以更流畅和灵活的方式构建复杂对象。
几种常用的对话框
普通对话框普通列表对话框单选列表对话框多选列表对话框
普通对话框例子
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/showDialogButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text显示对话框android:layout_centerInParenttrue /
/LinearLayoutpackage com.example.myapplication;import android.content.DialogInterface;
import android.os.Bundle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button showDialogButton findViewById(R.id.showDialogButton);showDialogButton.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {AlertDialog.Builder builder new AlertDialog.Builder(MainActivity.this);builder.setTitle(确认操作);builder.setMessage(你确定要执行这个操作吗);builder.setPositiveButton(确定, new DialogInterface.OnClickListener() {Overridepublic void onClick(DialogInterface dialog, int which) {// 用户点击“确定”按钮的操作Toast.makeText(MainActivity.this, 操作已确认, Toast.LENGTH_SHORT).show();}});builder.setNegativeButton(取消, null); // 点击“取消”按钮不做任何事情builder.show();}});}
}普通列表对话框例子
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/button_show_list_dialogandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text显示列表对话框android:layout_centerInParenttrue/
/LinearLayoutpackage com.example.myapplication;import android.os.Bundle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button buttonShowListDialog findViewById(R.id.button_show_list_dialog);buttonShowListDialog.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 列表项final String[] items {Kotlin, Java, Python, PHP, C#, C, C};AlertDialog.Builder listDialog new AlertDialog.Builder(MainActivity.this);listDialog.setTitle(选择你喜欢的开发语言);// 设置列表项和点击事件listDialog.setItems(items, (dialog, which) - {// which参数表示用户点击的项的索引Toast.makeText(MainActivity.this, 你选择了 items[which], Toast.LENGTH_SHORT).show();});// 显示对话框listDialog.show();}});}
}单选列表对话框例子
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/button_show_single_choice_dialogandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text显示单选对话框android:layout_centerInParenttrue//LinearLayoutpackage com.example.myapplication;import android.os.Bundle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button buttonShowSingleChoiceDialog findViewById(R.id.button_show_single_choice_dialog);buttonShowSingleChoiceDialog.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 单选列表项final String[] items {Kotlin, Java, Python, PHP, C#, C, C};int checkedItem 0; // 初始选中项的索引AlertDialog.Builder singleChoiceDialog new AlertDialog.Builder(MainActivity.this);singleChoiceDialog.setTitle(选择你喜欢的开发语言);// 设置单选列表项和点击事件singleChoiceDialog.setSingleChoiceItems(items, checkedItem, (dialog, which) - {// which参数表示用户点击的项的索引Toast.makeText(MainActivity.this, 你选择了 items[which], Toast.LENGTH_SHORT).show();//dialog.dismiss(); // 关闭对话框});// 显示对话框singleChoiceDialog.show();}});}
}多选列表对话框例子
?xml version1.0 encodingutf-8?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentxmlns:toolshttp://schemas.android.com/toolsandroid:orientationverticalandroid:gravitycentertools:context.MainActivityButtonandroid:idid/button_show_multi_choice_dialogandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:text显示多选对话框android:layout_centerInParenttrue//LinearLayoutpackage com.example.myapplication;import android.os.Bundle;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button buttonShowMultiChoiceDialog findViewById(R.id.button_show_multi_choice_dialog);buttonShowMultiChoiceDialog.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {// 多选列表项final String[] items {Kotlin, Java, Python, PHP, C#, C, C};boolean[] checkedItems {false, false, false, false, false, false, false}; // 初始选中状态AlertDialog.Builder multiChoiceDialog new AlertDialog.Builder(MainActivity.this);multiChoiceDialog.setTitle(请选择一个或多个选项);// 设置多选列表项和点击事件multiChoiceDialog.setMultiChoiceItems(items, checkedItems, (dialog, which, isChecked) - {// which参数表示用户点击的项的索引isChecked表示是否被选中checkedItems[which] isChecked; // 更新选中状态});// 设置确定按钮及其点击事件multiChoiceDialog.setPositiveButton(确定, (dialog, which) - {StringBuilder result new StringBuilder(你选择了);for (int i 0; i items.length; i) {if (checkedItems[i]) {result.append(items[i]).append( );}}Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();});// 显示对话框multiChoiceDialog.show();}});}
}参考文档 Android AlertDialog Android 对话框