Android Dialog对话框实例代码讲解

作者:xixi袭阳 时间:2021-12-18 06:34:50 

Dialog的基本方法


//创建Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
//设置标题图标
builder.setIcon(R.drawable.ic_launcher);
//设置标题
builder.setTitle("这是一个对话框");
//设置信息
builder.setMessage("是否要跳转?");
//确定按钮
setPositiveButton(CharSequence text, DialogInterface.OnClickListener listener)
//取消按钮
setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)
//忽略
setNeutralButton (CharSequence text, DialogInterface.OnClickListener listener)
//显示对话框
show();

系统样式

1.下拉列表


AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setIcon(R.drawable.ic_launcher);
    builder.setTitle("选择一个城市");
    //下拉列表的数据源
    final String[] cities = {"北京", "上海", "广州", "深圳", "杭州"};
    builder.setItems(cities, new DialogInterface.OnClickListener(){
      @Override
      public void onClick(DialogInterface dialog, int which){
        Toast.makeText(MainActivity.this, "你选择的城市为:" + cities[which], Toast.LENGTH_SHORT).show();
      }
});
builder.show();

2.单选框列表


AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
   builder.setIcon(R.drawable.ic_launcher);
   builder.setTitle("请选择性别");
   final String[] sex = {"男", "女"};
   //第二个参数指定默认哪个单选框被勾中
   builder.setSingleChoiceItems(sex, 1, new DialogInterface.OnClickListener(){
     @Override
     public void onClick(DialogInterface dialog, int which){
         Toast.makeText(MainActivity.this, "性别为:" + sex[which], Toast.LENGTH_SHORT).show();
     }
   });
   builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
     @Override
     public void onClick(DialogInterface dialog, int which){

}
   });
   builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
     @Override
     public void onClick(DialogInterface dialog, int which){

}
   });
builder.show();

3.多选框列表


String str;
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("选择你想看的电视剧");
final String[] hobbies = {"廷禧攻略", "扶摇", "香蜜沉沉烬如霜", "如懿传"};
//第二个参数代表哪几个选项被选择,需要传递一个boolean[]数组进去,其长度要和第一个参数的长度相同,如果null表示都不选
builder.setMultiChoiceItems(hobbies, null, new DialogInterface.OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked){
 if(isChecked){
 str.append(hobbies[which] + ", ");
 }
 Toast.makeText(MainActivity.this, "选择的是:" + str.toString(), Toast.LENGTH_SHORT).show();
 }
});
builder.setPositiveButton("确定", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){

}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){

}
});
builder.show();

 4.等待对话框


ProgressDialog waitingDialog= new ProgressDialog(MainActivity.this);
waitingDialog.setTitle("等待加载中,请稍后...");
waitingDialog.setMessage("等待中...");
waitingDialog.setIndeterminate(true);//采用不确定式的进度条
waitingDialog.setCancelable(false);//点击外部不取消对话框
waitingDialog.show();

5.进度条对话框


int MAXPD = 100;
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgress(0);//设置默认值
progressDialog.setTitle("正在下载");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//进度条样式
progressDialog.setMax(MAXPD);//设置最大值
progressDialog.show();

自定义Dialog

1.继承Dialog


public class CustomDialog extends Dialog {
//标题
protected TextView hintTv;
//左边按钮
protected Button doubleLeftBtn;
//右边按钮
protected Button doubleRightBtn;
//输入框
public EditText editText;
public CustomDialog(Context context) {
 super(context, R.style.CustomDialogStyle);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 this.setCancelable(false); // 是否可以撤销
 setContentView(R.layout.dialog_custom);
 hintTv = findViewById(R.id.tv_common_dialog_hint);
 doubleLeftBtn = findViewById(R.id.btn_common_dialog_double_left);
 doubleRightBtn = findViewById(R.id.btn_common_dialog_double_right);
 editText = findViewById(R.id.et_common_dialog);
}
//置右键文字和点击事件
public void setRightButton(String rightStr, View.OnClickListener clickListener) {
 doubleRightBtn.setOnClickListener(clickListener);
 doubleRightBtn.setText(rightStr);
}
//设置左键文字和点击事件
public void setLeftButton(String leftStr, View.OnClickListener clickListener) {
 doubleLeftBtn.setOnClickListener(clickListener);
 doubleLeftBtn.setText(leftStr);
}
//设置提示内容
public void setHintText(String str) {
 hintTv.setText(str);
 hintTv.setVisibility(View.VISIBLE);
}
//给两个按钮 设置文字
public void setBtnText(String leftStr, String rightStr) {
 doubleLeftBtn.setText(leftStr);
 doubleRightBtn.setText(rightStr);
}
}

2.自定义Style


<style name="CustomDialogStyle" parent="@android:style/Theme.Dialog">
   <!-- 边框 -->
   <item name="android:windowFrame">@null</item>
   <!-- 背景透明 -->
   <item name="android:windowBackground">@color/transparent</item>
   <!-- 无标题 -->
   <item name="android:windowNoTitle">true</item>
   <!-- 是否浮现在activity之上 -->
   <item name="android:windowIsFloating">true</item>
   <!-- 半透明 -->
   <item name="android:windowIsTranslucent">false</item>
   <!-- 背景模糊 -->
   <item name="android:windowContentOverlay">@null</item>
   <!-- 允许对话框的背景变暗 -->
   <item name="android:backgroundDimEnabled">true</item>
   <!-- 字体颜色 -->
   <item name="android:textColor">@color/white</item>
   <item name="android:editTextColor">@color/white</item>
</style>

3.自定义布局


<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:id="@+id/ll_common_dialog_layout"
 android:layout_width="500dp"
 android:layout_height="250dp"
 android:layout_margin="5dp"
 android:background="@drawable/background_info"
 android:orientation="vertical"
 android:gravity="center">

<!--提示信息-->
 <TextView
   android:id="@+id/tv_common_dialog_hint"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:gravity="center"
   android:textColor="@color/white"
   android:textSize="27sp"/>
 <EditText
   android:id="@+id/et_common_dialog"
   android:layout_width="300dp"
   android:layout_height="wrap_content"
   android:textColor="@color/back"
   android:inputType="text|textNoSuggestions"
   tools:ignore="LabelFor"
   android:hint="请输入密码"/>

<!--底部按钮-->
 <LinearLayout
   android:id="@+id/ll_common_dialog_double"
   android:layout_width="360dp"
   android:layout_height="60dp"
   android:layout_margin="20dp"
   android:orientation="horizontal">

<Button
     android:id="@+id/btn_common_dialog_double_left"
     android:layout_width="0dp"
     android:layout_height="match_parent"
     android:layout_weight="1"
     android:background="@drawable/btnselector"
     android:gravity="center"
     android:textColor="@color/white"
     android:textSize="27dp"/>

<Button
     android:id="@+id/btn_common_dialog_double_right"
     android:layout_width="0dp"
     android:layout_height="match_parent"
     android:layout_weight="1"
     android:background="@drawable/btnselector"
     android:gravity="center"
     android:textColor="@color/white"
     android:textSize="27dp"/>
 </LinearLayout>
</LinearLayout>

4.ipad隐藏底部虚拟按键


//弹出dialog时隐藏底部虚拟按键
dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
dialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
 @Override
 public void onSystemUiVisibilityChange(int visibility) {
   int uiOptions =View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
   if (Build.VERSION.SDK_INT >= 19) {
     uiOptions |= 0x00001000;
   } else {
     uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
   }
   dialog.getWindow().getDecorView().setSystemUiVisibility(uiOptions);
 }
});

5.使用自定义Dialog


CustomDialog dialog = new CustomDialog(this);
dialog.setHintText("请输入密码");
dialog.setLeftButton("取消", new View.OnClickListener() {
   @Override
   public void onClick(View v) {
     dialog.dismiss();
   }
});
dialog.setRightButton("确定", new View.OnClickListener() {
   @Override
   public void onClick(View v) {

}
});
dialog.show();

总结

以上所述是小编给大家介绍的Android Dialog对话框实例代码讲解网站的支持!

来源:https://www.cnblogs.com/94xiyang/archive/2018/08/21/9509810.html

标签:android,dialog,对话框
0
投稿

猜你喜欢

  • java WebSocket客户端断线重连的实现方法

    2023-05-26 22:45:18
  • Android自定义播放器控件VideoView

    2023-06-25 03:29:00
  • C#预处理器指令的用法实例分析

    2023-03-09 16:21:07
  • spring与disruptor集成的简单示例

    2021-12-16 11:01:41
  • Spring Boot+Mybatis的整合过程

    2023-12-20 06:50:18
  • Mybatis中的@Select、foreach用法

    2023-06-05 00:07:20
  • C#使用Resources资源文件

    2023-07-04 08:42:48
  • java自定义切面增强方式(关于自定义注解aop)

    2022-05-30 15:16:58
  • Spring集成MyBatis 及Aop分页的实现代码

    2022-01-06 14:30:47
  • 浅谈Java HttpURLConnection请求方式

    2021-06-24 12:34:49
  • android商户扫码枪读取手机二维码

    2023-11-09 12:58:24
  • 解决IDEA中快捷键Alt+Enter不能使用的问题

    2022-09-14 07:54:07
  • Maven打包时如何指定启动类

    2021-06-16 11:48:00
  • 代码分析Android消息机制

    2023-07-26 09:44:44
  • android 实现控件左右或上下抖动教程

    2023-03-19 17:02:07
  • C#查找字符串所有排列组合的方法

    2022-07-04 10:01:54
  • Java 数据结构与算法系列精讲之时间复杂度与空间复杂度

    2022-03-19 20:19:50
  • Java 7大常见排序方法实例详解

    2022-01-09 05:16:46
  • MyBatis的SUM映射问题及解决

    2023-01-07 17:27:04
  • 全面解析SpringBoot文件上传功能

    2023-02-26 15:55:56
  • asp之家 软件编程 m.aspxhome.com