android dialog 结构,Android 原生Dialog实现
1. 簡介
Dialog 是一個可以展示信息以及和用戶交互的小窗體.
1.1 Dialog 的組成部分
Title 標題部分 : 這部分是可選的,只有當內容區域被使用了才可以使用這里.(并不是強制的)
Content 內容區域 : 顯示信息的部分,可以使用自定義布局.
Action Buttons 交互按鈕 : 最多三個按鈕.(Positive,Negative, Neutral)
1.2 管理Dialog
使用DialogFragment來管理Dialog可以正確處理生命周期事件. 我們可以創建各種各樣的Dialog,當然可以自定義UI.
2 分類
對于系統的原生的Dialog主要有下面幾種 :
普通提示Dialog.
列表Dialog.
單選列表Dialog.
多選列表Dialog.
自定義ContentView Dialog.
自定義TitleView Dialog.
先看效果圖
效果圖
2.1 普通提示Dialog
實現代碼
/**
* 普通提示Dialog.
*/
public static class NormalTextDialogFragment extends DialogFragment {
/**
* 創建Dialog時調用
*/
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Log.d(TAG, "onCreateDialog: ");
// 創建構造器
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 設置參數
builder.setMessage("普通提示Dialog信息")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d(TAG, "onClick: 確定 " + Thread.currentThread().getId());
Toast.makeText(getActivity(), "點擊了確定", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d(TAG, "onClick: 取消 " + Thread.currentThread().getId());
Toast.makeText(getActivity(), "點擊了取消", Toast.LENGTH_SHORT).show();
}
});
// 創建對話框并返回.
return builder.create();
}
}
調用方式
// 創建類實例,調用 show() 方法就可以顯示了.
new NormalTextDialogFragment().show(getSupportFragmentManager(), "normal_text_dialog");
2.2 列表Dialog
/**
* 列表Dialog
*/
public static class ListDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
return builder
.setTitle("顏色選擇")
.setItems(R.array.color_arrays, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 獲取列表
String[] colors = getResources().getStringArray(R.array.color_arrays);
// 顯示
Toast.makeText(getActivity(), "選擇了 " + colors[which], Toast.LENGTH_SHORT).show();
}
})
.create();
}
}
2.3 單選Dialog
/**
* 單選框Dialog
*/
public static class SingleChoiceDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setSingleChoiceItems(R.array.color_arrays, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 獲取列表
String[] colors = getResources().getStringArray(R.array.color_arrays);
// 顯示
Toast.makeText(getActivity(), "選擇了 " + colors[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("OK",null)
.setNegativeButton("Cancel", null)
.create();
}
}
2.4 多選Dialog
/**
* 多選項Dialog
*/
public static class MultiChoiceDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setMultiChoiceItems(R.array.color_arrays, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// 獲取列表
String[] colors = getResources().getStringArray(R.array.color_arrays);
// 顯示
String txt = "點擊了: " + colors[which] + " == " + isChecked;
Toast.makeText(getActivity(), txt, Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("OK", null)
.setNegativeButton("Cancel", null)
.create();
}
}
2.5 自定義ContentView
/**
* 自定義Content
*/
public static class CustomContentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
return builder
.setView(R.layout.dialog_custom_content)
.setPositiveButton("OK" , null)
.setNegativeButton("Cancel", null)
.create();
}
}
2.6 自定義Title
/**
* 自定義標題Dialog
*/
public static class CustomTitleDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater li = getActivity().getLayoutInflater();
return builder
.setCustomTitle(li.inflate(R.layout.dialog_custom_title, null))
.setPositiveButton("OK" , null)
.setNegativeButton("Cancel", null)
.create();
}
}
總結
以上是生活随笔為你收集整理的android dialog 结构,Android 原生Dialog实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android如何不用系统签名,更新An
- 下一篇: html效果属性是,htmltransi