Android进阶之AlertDialog自定义

AlertDialog的自定义方式有很多种,这里介绍两种。 第一种是比较简单的,只自定义内容。在AlertDialog使用详解中,非常详细的介绍了以下六种使用方法。一、简单的AlertDialog(只显示一段简单的信息,比如about us)二、带按钮的AlertDialog(显示提示信息,让用户操作,比如exit时的警告框)三、类似ListView的AlertDialog(展示内容,比如某人的一

大家好,又见面了,我是全栈君。

AlertDialog的自定义方式有很多种,这里介绍两种。

 

第一种是比较简单的,只自定义内容。

AlertDialog使用详解中,非常详细的介绍了以下六种使用方法。

一、简单的AlertDialog(只显示一段简单的信息,比如about us)

二、带按钮的AlertDialog(显示提示信息,让用户操作,比如exit时的警告框)

三、类似ListView的AlertDialog(展示内容,比如某人的一些注册信息)

四、类似RadioButton的AlertDialog(让用户选择,单选)

五、类似CheckBox的AlertDialog(让用户多选)

六、自定义View的AlertDialog(当以上方式满足不了你的需求,就要自定义了)

\

最后的第六种也就是自定义内容的实现方式,比如想做一个这种登录对话框,通过前五种方式明显实现不了。

这时候就通过AlertDialog.Builder的setView把自己定义的登录界面设置进去,

而标题和按钮都还用Android原生的,如果你是像这种方式的自定义,请进前面链接查看最后一种方式。

 

这里介绍第二种方式。

先看一下效果,左图为原生的AlertDialog,右图为自定义的AlertDialog,这样自定义主要是为了让界面更加统一。

Android进阶之AlertDialog自定义Android进阶之AlertDialog自定义

代码如下:

String info = cityData.getPointerList().get(position).toString();
AlertDialog alertDialog = new AlertDialog.Builder(CityActivity.this).create();
alertDialog.show();
Window window = alertDialog.getWindow();
window.setContentView(R.layout.dialog_main_info);
TextView tv_title = (TextView) window.findViewById(R.id.tv_dialog_title);
tv_title.setText("详细信息");
TextView tv_message = (TextView) window.findViewById(R.id.tv_dialog_message);
tv_message.setText(info);

布局文件:

<?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"
    android:background="#ffff"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_dialog_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#7a7"
        android:padding="8dp"
        android:textColor="#eee"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_dialog_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:padding="3dp" />

</LinearLayout>

其实这里自定义的主要目的就是想让title的背景颜色显示绿色,与activity的背景绿一致,比较和谐。

AlertDialog是Dialog的子类,也可以直接基于Dialog自定义。方法很多,用到了再尝试。

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121337.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 无人机数车–Drone-based Object Counting by Spatially Regularized Regional Proposal Network[通俗易懂]

    无人机数车–Drone-based Object Counting by Spatially Regularized Regional Proposal Network[通俗易懂]Drone-basedObjectCountingbySpatiallyRegularizedRegionalProposalNetworkICCV2017数据库:https://lafi.github.io/LPN/本文主要使用CNN网络处理无人机拍摄的视频,同时完成对图像中的车辆检测和计数,新建了一个用无人机拍摄停车场的数据库CARPK,含有近9万辆车下面是一个示意

    2022年8月15日
    1
  • CentOS7下使用YUM安装MySQL5.6

    CentOS7下使用YUM安装MySQL5.6(1)检查系统中是否已安装MySQL。rpm-qa|grepmysql返回空值的话,就说明没有安装MySQL。注意:在新版本的CentOS7中,默认的数据库已更新为了Mariadb,而非MySQL,所以执行yuminstallmysql命令只是更新Mariadb数据库,并不会安装MySQL。(2)查看已安装的Mariadb数据库版本…

    2022年6月12日
    27
  • clion永久激活码[最新免费获取]

    (clion永久激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~6EK6WKOHUX-eyJsaWNlbnNlSWQiOi…

    2022年3月28日
    57
  • Chrome performance_开发者模式玩游戏流畅

    Chrome performance_开发者模式玩游戏流畅主要有4方面:(对照下图)1.控制按钮。2.overview。页面性能的高级汇总(FPS:帧率,CPU:CPU占用,NET:网络请求)3.火焰图。CPU堆叠追踪的可视化(左侧名称是主线程的各种事件,Network:网络请求详细情况)4.数据统计。以图表的形式汇总数据(summary:统计报表,Bottom-Up:事件时长顺序,CallTree:事件调用顺序,Eventlog:事件发生的……

    2025年7月9日
    1
  • flash cookie的制作和使用例子详解 一

    flash cookie的制作和使用例子详解 一flashcookie是什么,有什么作用,这些不做介绍,可以在网上搜,这里主要是做一个制作和使用flashcookie的例子要使用flashcookie首先要制作一个swf的flash文件,然后在页面才能调用。flash的制作,这里我们就用adobeflashcs5,这个工具网上一搜就可以找到下载地址打开后界面如下图所示,[img]http://dl2.iteye…

    2022年7月14日
    16
  • Java解惑五:类之谜

    Java解惑五:类之谜

    2021年11月23日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号