简介
AlertDialog
是一个常用的组件,用于展示一个漂浮在当前界面之上的对话框,常用来显示警告、确认信息或简单的用户输入。通常,我们不是直接实例化AlertDialog
对象,而是通过其内部类AlertDialog.Builder
来构建。AlertDialog
不同于前面已经学习过的 UI 控件,它不能用 new
方法创造出来,也不能用 XML 创建,只能通过 AlertDialob
的内部类 Builder
来创建。
一、AlertDialog.Builder主要方法
相应方法简单解释:
Item项设置及监听,MultiChoiceItems多选,SingleChoiceItems单选,Title标题,Message对话框的内容,setView加载自定义布局。
Neutral中立按钮,Posi确定按钮,Nega取消按钮
二、三大按钮
确定按钮setPositivebuttom("确定",null),setNegativebutton("取消",null),setNatralbuttom("中立",null)均可以设置对应的监听。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
builder.setTitle("中心技术")
.setIcon(R.mipmap.ic_launcher)
.setView(R.layout.item_fruit);
builder.setPositiveButton("确定",null);
builder.setNegativeButton("取消",null);
builder.setNeutralButton("中立",null);
builder.create().show();
}
});
}
}
效果:
三、setView自定义模板加载
创建Layout布局,通过setView加载布局:
可以在Layout的xml布局中自定义对话框的各种样式。
此例中的xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="132dp"
android:layout_marginTop="32dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:src="@drawable/ic_launcher_background" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="对话框"
app:layout_constraintEnd_toEndOf="@+id/imageView"
app:layout_constraintHorizontal_bias="0.54"
app:layout_constraintStart_toStartOf="@+id/imageView"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
</androidx.constraintlayout.widget.ConstraintLayout>
代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
builder.setTitle("中心技术")
.setIcon(R.mipmap.ic_launcher)
.setView(R.layout.item_fruit);
builder.create().show();
}
});
}
}
四、setItems列表项对话框
.setItems()
方法参数解释:
.setItems()
方法是 AlertDialog.Builder
类中的一个方法,用于在对话框中展示一系列可点击的文本项。与 .setSingleChoiceItems()
和 .setMultiChoiceItems()
不同,.setItems()
不涉及复选或单选逻辑,每个选项点击后都会触发相同的监听器,通常用于提供一系列操作供用户选择。下面是这个方法的参数解释及使用示例:
-
Items
: 这是一个字符序列数组(CharSequence[]
)或列表(List<CharSequence>
),包含了要在对话框中显示的每个选项的文本。 -
new DialogInterface.OnClickListener()
: 这是一个匿名内部类,用于监听每个选项的点击事件。当用户点击列表中的任意一项时,会触发onClick
方法。它包含两个参数:DialogInterface dialog
: 触发点击事件的对话框实例。int which
: 用户点击的选项的索引,索引与Items
数组中的位置相对应。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
String[] Items = new String[]{"笑笑", "开心", "喜悦", "高兴", "欢喜"};
builder.setTitle("中心技术")
.setIcon(R.mipmap.ic_launcher)
.setItems(Items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选择"+Items[which], Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确认",null);
builder.create().show();
}
});
}
}
五、setSingleChoiceItems单选列表项的对话框
.setSingleChoiceItems()中参数解释:
-
Items
: 这是一个字符数组(CharSequence[]
)或列表(List<CharSequence>
),包含了要在对话框中显示为单选列表的每个项目的文本。每个项目将作为一个单独的可选项出现在列表中。 -
9
: 默认索引(默认选中)=这个参数表示默认选中的列表项的索引。在上述代码中,索引为9的项目会在对话框打开时被预选。索引是从0开始的,所以这里实际上是选择了第10个条目。确保提供的索引是有效的,即在Items
的范围内,否则可能会引发异常。 -
new DialogInterface.OnClickListener()
: 这是一个匿名内部类,用于监听列表项的选择事件。当用户从列表中选择一个项目时,onClick
方法会被调用。你需要在这个监听器里定义用户选择某项之后的处理逻辑。它的参数包括:DialogInterface dialog
: 触发点击事件的对话框实例。int which
: 所选标号=用户所选项目的索引。这个索引与你在Items
中定义的项目一一对应,可以用来识别用户选择了哪一个选项。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
String[] Items = new String[]{"笑笑", "开心", "喜悦", "高兴", "欢喜"};
builder.setTitle("中心技术")
.setIcon(R.mipmap.ic_launcher)
.setSingleChoiceItems(Items, 9, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "选择"+Items[which], Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("确认",null);
builder.create().show();
}
});
}
}
效果:
<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="TbGMwQrm-1718346348247" src="https://live.csdn.net/v/embed/398721"></iframe>setSingleChoiceItems单选
六、setMultiChoiceItems多选列表项的对话框
.setMultiChoiceItems()
方法参数解释:
.setMultiChoiceItems()
方法用于在 AlertDialog
中创建一个多选列表。与 .setSingleChoiceItems()
不同,它允许用户选择列表中的多个项目。以下是该方法的参数解析和使用示例:
-
items
: 数据 = 这是一个字符序列数组(CharSequence[]
)或列表(List<CharSequence>
),包含要显示在多选列表中的各个项目文本。 -
checkedItem
: 选值 = 这是一个布尔型数组(boolean[]
),用于指定列表中哪些项目在对话框打开时默认被选中。数组的索引需与items
中元素的索引相对应,true
表示对应的项目被选中,false
表示未被选中。 -
new DialogInterface.OnMultiChoiceClickListener()
: 监听 = 这是一个匿名内部类,用于监听多选列表项的选择状态变化。当用户更改列表中项目的选中状态时,会触发onClick
方法。它有两个参数:DialogInterface dialog
: 触发事件的对话框实例。int which
: 被用户改变选中状态的项目的索引。boolean isChecked
: 表示该项目当前是否被选中。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
String[] items = new String[]{"笑笑", "开心", "喜悦", "高兴", "欢喜"};
boolean[] checkedItem = new boolean[]{false, false, false, false,false};
builder.setTitle("中心技术")
.setIcon(R.mipmap.ic_launcher)
.setMultiChoiceItems(items, checkedItem, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkedItem[which] = isChecked;
}
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String result = "";
for (int i = 0; i < checkedItem.length; i++) {
if (checkedItem[i]) {
result += items[i] + ",";
}
}
Toast.makeText(MainActivity.this, "结果["+result+"]", Toast.LENGTH_SHORT).show();
}
});
builder.create().show();
}
});
}
效果:
<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="zpSjqtrC-1718346375849" src="https://live.csdn.net/v/embed/398711"></iframe>setMultChioceItems效果
标签:对话框,builder,AlertDialog,button,new,void From: https://blog.csdn.net/m0_74225871/article/details/139652848