Android自定义对话框Dialog

 更新时间:2017年04月07日 08:51:52   作者:Love_1995  
这篇文章主要为大家详细介绍了Android自定义对话框Dialog的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文简单介绍自定义对话框Dialog的使用,代码和结构都非常简单,目的是能够快速使用自定义对话框,在本文中不具体讲解对话框的高级使用。

实现步骤

首先需要自己在我们的.xml文件中自己构建布局
布局文件做好之后,我们可以在style文件下自己定义布局的样式
前两步都做好之后,我开始在写java文件

具体实现过程

1.   xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="300dp"
  android:layout_height="180dp"
  android:gravity="center"
  android:orientation="vertical">

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="@android:color/holo_green_light">

    <TextView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:gravity="center_vertical"
      android:text="IP设置"
      android:textColor="#fff"
      android:textSize="24sp" />
  </LinearLayout>

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="#fff"
    android:gravity="center"
    android:orientation="horizontal"
    android:padding="5dp">

    <EditText
      android:id="@+id/et_ip1"
      style="@style/textview14sp"
      android:layout_weight="1"
      android:inputType="phone"
      android:maxLength="3"
      android:textColor="@color/colorPrimary" />

    <EditText
      android:id="@+id/et_ip2"
      style="@style/textview14sp"
      android:layout_weight="1"
      android:inputType="phone"
      android:maxLength="3"
      android:textColor="@color/colorPrimary" />

    <EditText
      android:id="@+id/et_ip3"
      style="@style/textview14sp"
      android:layout_weight="1"
      android:inputType="phone"
      android:maxLength="3"
      android:textColor="@color/colorPrimary" />

    <EditText
      android:id="@+id/et_ip4"
      style="@style/textview14sp"
      android:layout_weight="1"
      android:inputType="phone"
      android:maxLength="3"
      android:textColor="@color/colorPrimary" />
  </LinearLayout>

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:orientation="horizontal">

    <Button
      android:id="@+id/btn_ipok"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:background="@android:color/holo_green_light"
      android:text="确认"
      android:textColor="#fff"
      android:textSize="30sp" />

    <View
      android:layout_width="1dp"
      android:layout_height="match_parent"
      android:background="#fff" />

    <Button
      android:id="@+id/btn_ipcancle"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:background="@android:color/holo_green_light"
      android:text="取消"
      android:textColor="#fff"
      android:textSize="30sp" />
  </LinearLayout>
</LinearLayout>

以上是我的xml代码,里面用到了一些简单的组建,大家按自己的需求和风格制作就行。部分组件中用到了style属性,该属性我们同样是在res/value/style文件中构建.
注意:所有组件的首字母都要大写。

2.  style

<!-- 自定义对话框样式 -->
  <style name="dialog_custom" parent="android:style/Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">#00000000</item>
    <item name="android:windowBackground">@android:color/transparent</item>
  </style>


3.  class文件

public class IP_dialog extends Dialog {
  private Button btnOk, btnCancle;
  private EditText ip1, ip2, ip3, ip4;
  public static String ip = "";

  public IP_dialog(Context context) {
    super(context, R.style.dialog_custom);
  }

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog);
    initView();
    initEvet();
  }

  /*初始化组件*/
  private void initView() {
    btnOk = (Button) findViewById(R.id.btn_ipok);
    btnCancle = (Button) findViewById(R.id.btn_ipcancle);
    ip1 = (EditText) findViewById(R.id.et_ip1);
    ip2 = (EditText) findViewById(R.id.et_ip2);
    ip3 = (EditText) findViewById(R.id.et_ip3);
    ip4 = (EditText) findViewById(R.id.et_ip4);
  }

  /*监听事件*/
  private void initEvet() {
    btnOk.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        ip = getIP();
        Log.e("IP--->", ip);
        dismiss();
      }
    });
    btnCancle.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        dismiss();
      }
    });
  }

  /*获取输入的IP值*/
  private String getIP() {
    String ip = ip1.getText().toString().trim() + "."
        + ip2.getText().toString().trim() + "."
        + ip3.getText().toString().trim() + "."
        + ip4.getText().toString().trim();
    return ip;
  }
}

该类继承Dialog,在该类中我们需要有一个构造方法在方法里面引用我们的style文件,接下来的就是我们一般套路啦。特别提示一下我在该类中使用dismiss();来销毁对话框。在MainActivity.java中,只需要把这个类实例化一下,创建出对象,调用对象的show();方法就可以将对话框显示出来。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android开发环境安装和配置图文教程

    Android开发环境安装和配置图文教程

    轻松搞定Android开发环境部署,这篇文章主要为大家详细介绍了Android开发环境安装和配置图文教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 简单实现Android放大镜效果

    简单实现Android放大镜效果

    这篇文章主要教大家简单实现Android放大镜效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • android自定义组件实现仪表计数盘

    android自定义组件实现仪表计数盘

    这篇文章主要为大家详细介绍了android自定义组件实现仪表计数盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Flutter异步操作实现流程详解

    Flutter异步操作实现流程详解

    在Flutter中,借助 FutureBuilder 组件和 StreamBuilder 组件,可以非常方便地完成异步操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • Android自定义View实现loading动画加载效果

    Android自定义View实现loading动画加载效果

    项目开发中对Loading的处理是比较常见的,安卓系统提供的不太美观,引入第三发又太麻烦,这时候自己定义View来实现这个效果。这篇文章主要介绍了Android自定义View实现loading动画加载效果,需要的朋友可以参考下
    2017-03-03
  • Flutter质感设计之直接输入

    Flutter质感设计之直接输入

    这篇文章主要为大家详细介绍了Flutter质感设计之直接输入,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android6.0蓝牙出现无法扫描设备或闪退问题解决办法

    Android6.0蓝牙出现无法扫描设备或闪退问题解决办法

    这篇文章主要介绍了Android6.0蓝牙出现无法扫描设备或闪退问题解决办法的相关资料,需要的朋友可以参考下
    2017-02-02
  • android实现用户体验超棒的微信WebView进度条

    android实现用户体验超棒的微信WebView进度条

    本篇文章主要介绍了android实现用户体验超棒的微信WebView进度条,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • AndroidStudio3.6的卸载安装,Gradle持续下载/Gradle Build失败等问题

    AndroidStudio3.6的卸载安装,Gradle持续下载/Gradle Build失败等问题

    这篇文章主要介绍了AndroidStudio3.6的卸载安装,Gradle持续下载/Gradle Build失败等问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Android View源码解读 DecorView与ViewRootImpl浅谈

    Android View源码解读 DecorView与ViewRootImpl浅谈

    这篇文章主要解读了Android View源码,为大家详细介绍DecorView与ViewRootImpl,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02

最新评论