对话框:普通对话框,单选列表,多选列表
普通对话框 Dialog
对话框显示3个部分:标题、内容区域(它可以显示消息、列表或其他自定义布局。)、操作按钮(对话框中的操作按钮不应超过三个。)
常用的几个方法
setTitle() | 设置对话框标题 |
---|---|
setMessage() | 设置对话框消息 |
setPositiveButton () | 设置对话框添加yes按钮 |
setNegativeButton () | 设置对话框添加no按钮 |
弄一个按钮,点击跳转事件normaleDialog
<?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">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="普通对话框"
android:onClick="normaleDialog"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
}
//普通对话框,.setPositiveButton("确定", null) 没有设置监听就用null
//builder.show();是将他们显示出来的意思
public void normaleDialog(View v){
//调用内置类AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("普通对话框")
.setMessage("你确定你要退出吗?")
.setPositiveButton("确定", null)
.setNegativeButton("取消", null);
builder.show();
}
}
添加列表
(我们的内容可以显示为列表)
列表又分为单选列表(单选按钮)和多选列表(复选框)
单选列表
<?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">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="普通对话框"
android:onClick="normaleDialog"/>
</LinearLayout>
1、单选列表 .setSingleChoiceItems这里运用的是这个方法创建
2、包含三个参数(数组;是否默认选中,0代表默认第一个,-1默认未选中;是否监听,允许对话框被点击)
3、public void onClick(DialogInterface dialog, int i) {Toast.makeText(MainActivity.this, string[i], Toast.LENGTH_LONG).show();
输入i 输出string[i]
这里的string[i]对应数组的值进行输出
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
}
public void normaleDialog(View v){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//创建了一个数组,里面的内容使我们列表的内容
final String []string =new String[]{"红色","黄色","蓝色"};
builder.setTitle("普通对话框")
.setSingleChoiceItems(string, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
Toast.makeText(MainActivity.this, string[i], Toast.LENGTH_LONG).show();
}
})
.setPositiveButton("确定",null);
builder.show();
}
}
多选列表
1、多选列表用setMultiChoiceItems创建方法
2、 Toast.makeText(MainActivity.this, selectedItems.toString(), Toast.LENGTH_LONG).show();
当我们按确定的时候输出选中的的下标。
<?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">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="普通对话框"
android:onClick="normaleDialog"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog);
}
//对话框:多选列表
public void normaleDialog(View v){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final String []string =new String[]{"红色","黄色","蓝色"};
final ArrayList selectedItems = new ArrayList(); //selecteditems比起数组可以自动扩容,就是数组不用设置长度
builder.setTitle("普通对话框")
.setMultiChoiceItems(string, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
if (isChecked) {
// If the user checked the item, add it to the selected items
selectedItems.add(which);//点击则放进selectedItems
} else if (selectedItems.contains(which)) {
// Else, if the item is already in the array, remove it
selectedItems.remove(Integer.valueOf(which));
}
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// FIRE ZE MISSILES!
Toast.makeText(MainActivity.this, selectedItems.toString(), Toast.LENGTH_LONG).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
builder.show();
}
}