热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android常用控件之Toast与AlertDialog的常规用法和自定义用法

概述1、Toast:a、用来显示信息;b、没有焦点,显示时间有限;c、不会打断用户当前的操作常用方法:sho

概述

1、Toast: a、用来显示信息 ;b、没有焦点,显示时间有限;c、不会打断用户当前的操作
常用方法: show():用于显示信息。
setGravity(): #param:int gravity,int xOffset,int yOffset;用于设置信息的显示的位置。
setText():用于显示信息的文本,可以传入Spanner类的内容。
setView():用于设置信息的布局。
Dialog: 常用的又AlertDialog,继承于Dialog。


知识内容


Toast

Toast有常规用法和自定义用法,所谓自定义用法,就是用setView()方法给Toast的信息提示提供一个自定义布局,达到特殊的目的。
java部分用两个按键的分别测试Toast的富文本用法和自定义用法

public class MainActivity extends Activity implements View.OnClickListener {private Button toastButton;private Button toastButton2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);toastButton = (Button) findViewById(R.id.toast_btn);toastButton.setOnClickListener(this);toastButton2 = (Button) findViewById(R.id.toast_btn2);toastButton2.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.toast_btn://Toast的setText可以传入一个富文本Toast toast;toast = Toast.makeText(getApplicationContext(), "我是你Toast爸爸", Toast.LENGTH_SHORT);Spanned spanned = Html.fromHtml("我是toast", new Html.ImageGetter() {@Overridepublic Drawable getDrawable(String source) {Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());return null;}}, null);toast.setText(spanned);toast.setGravity(Gravity.LEFT | Gravity.BOTTOM, 0, 0);toast.show();case R.id.toast_btn2://自定义Toast即是给Toast设置一个自定义布局以显示信息Toast toast2 = new Toast(getApplicationContext());LayoutInflater inflater = getLayoutInflater();View view = inflater.inflate(R.layout.toast_view, null);TextView textView_content = (TextView) view.findViewById(R.id.content_text);textView_content.setText("我是内容");toast2.setView(view);toast2.setDuration(Toast.LENGTH_LONG);toast2.show();break;default:break;}}
}

布局文件activity_main

<RelativeLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"xmlns:tools&#61;"http://schemas.android.com/tools"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:paddingLeft&#61;"&#64;dimen/activity_horizontal_margin"android:paddingRight&#61;"&#64;dimen/activity_horizontal_margin"android:paddingTop&#61;"&#64;dimen/activity_vertical_margin"android:paddingBottom&#61;"&#64;dimen/activity_vertical_margin"tools:context&#61;".MainActivity"><Button
android:id&#61;"&#64;&#43;id/toast_btn"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"测试Toast"/>
<Button
android:id&#61;"&#64;&#43;id/toast_btn2"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:layout_below&#61;"&#64;&#43;id/toast_btn"android:text&#61;"测试自定义Toast"/>
RelativeLayout>

Toast用于显示信息的自定义布局toast_view


<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"android:gravity&#61;"center_horizontal"android:orientation&#61;"vertical"><TextView
android:id&#61;"&#64;&#43;id/title_text"android:layout_width&#61;"wrap_content"android:layout_height&#61;"wrap_content"android:text&#61;"我是标题"/>
<ImageView
android:id&#61;"&#64;&#43;id/image"android:layout_width&#61;"100dp"android:layout_height&#61;"100dp"android:src&#61;"&#64;drawable/abc_btn_rating_star_off_mtrl_alpha"/>
<TextView
android:id&#61;"&#64;&#43;id/content_text"android:layout_width&#61;"wrap_content"android:layout_height&#61;"wrap_content"android:text&#61;"我是内容"/>
LinearLayout>

结果演示&#xff1a;
这里写图片描述


AlertDialog

AlertDialog可以有多种形式&#xff1a;带有信息的简单对话框、可选择的对话框、单选对话框、多选对话框等
java部分&#xff0c;用四哥按钮来测试四种对话框

public class DialogActivity extends Activity implements View.OnClickListener {private Button dialogButton;private Button dialogButton2;private Button dialogButton3;private Button dialogButton4;private String[] mSexs &#61; {"男","女","其他"};private String[] mData &#61; {"第一个数据","第二个数据","第三个数据","第四个数据","第五个数据"};private String[] mHobbys &#61; {"篮球","乒乓球","游泳","跑步","健身"};private boolean[] mCheckedManager;//用于存储checkbox的是否被选中的状态private StringBuffer hobby;private String sex;&#64;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_dialog);dialogButton &#61; (Button)findViewById(R.id.button_dialog);dialogButton.setOnClickListener(this);dialogButton2 &#61; (Button)findViewById(R.id.button2_dialog);dialogButton2.setOnClickListener(this);dialogButton3 &#61; (Button)findViewById(R.id.button3_dialog);dialogButton3.setOnClickListener(this);dialogButton4 &#61; (Button)findViewById(R.id.button4_dialog);dialogButton4.setOnClickListener(this);}&#64;Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_dialog:simpleDialog();break;case R.id.button2_dialog:selectedDialog();break;case R.id.button3_dialog:singleDialog();break;case R.id.button4_dialog:mutiSelectedDialog();default:break;}}//建议对话框public void simpleDialog(){AlertDialog.Builder builder &#61; new AlertDialog.Builder(DialogActivity.this);builder.setIcon(R.mipmap.ic_launcher).setTitle("我是标题").setMessage("我是内容").setNegativeButton("NegativeButton", new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(getApplicationContext(), "选中NegativeButton", Toast.LENGTH_SHORT).show();}}).setNeutralButton("NeutralButton", new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(getApplicationContext(), "选中NeutralButton", Toast.LENGTH_SHORT).show();}}).setPositiveButton("PositiveButton", new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(getApplicationContext(), "选中PositiveButton", Toast.LENGTH_SHORT).show();}});AlertDialog dialog &#61; builder.create();dialog.show();}//可选对话框public void selectedDialog(){AlertDialog.Builder builder2 &#61; new AlertDialog.Builder(DialogActivity.this);builder2.setTitle("多选型Dialog");builder2.setItems(mData, new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(getApplicationContext(), "选中了第" &#43; which &#43; "个", Toast.LENGTH_SHORT).show();}});AlertDialog dialog1 &#61; builder2.create();dialog1.show();}//单选对话框public void singleDialog(){sex &#61; mSexs[0];AlertDialog.Builder builder &#61; new AlertDialog.Builder(DialogActivity.this);builder.setTitle("单选Dialog");builder.setSingleChoiceItems(mSexs, 0, new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {sex &#61; mSexs[which];Toast.makeText(getApplicationContext(), "选中的性别是" &#43; sex, Toast.LENGTH_SHORT).show();}});builder.setNeutralButton("确定", new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {dialogButton3.setText("您选中的性别是" &#43; sex);}});builder.setNegativeButton("取消", new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {}});builder.show();//builder.show()也可以直接显示对话框}//多选对话框public void mutiSelectedDialog(){mCheckedManager &#61; new boolean[mHobbys.length];AlertDialog.Builder builder &#61; new AlertDialog.Builder(DialogActivity.this);builder.setTitle("[title]请选中您爱好的运动");builder.setMultiChoiceItems(mHobbys, mCheckedManager, new DialogInterface.OnMultiChoiceClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {mCheckedManager[which] &#61; isChecked;}});builder.setNeutralButton("确定", new OnClickListener() {&#64;Overridepublic void onClick(DialogInterface dialog, int which) {hobby &#61; new StringBuffer();for (int i &#61; 0; i if (mCheckedManager[i]) {hobby.append(mHobbys[i]);}}dialogButton4.setText("您的爱好是&#xff1a;"&#43;hobby);}});builder.show();}}

布局文件


<LinearLayout xmlns:android&#61;"http://schemas.android.com/apk/res/android"android:orientation&#61;"vertical"android:layout_width&#61;"match_parent"android:layout_height&#61;"match_parent"><Button
android:id&#61;"&#64;&#43;id/button_dialog"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"弹出一个最简单的dialog"/>
<Button
android:id&#61;"&#64;&#43;id/button2_dialog"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"显示选择的Dialog"/>
<Button
android:id&#61;"&#64;&#43;id/button3_dialog"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"显示单选Dialog"/>
<Button
android:id&#61;"&#64;&#43;id/button4_dialog"android:layout_width&#61;"match_parent"android:layout_height&#61;"wrap_content"android:text&#61;"显示多选Dialog"/>

LinearLayout>

结果演示&#xff1a;
简单对话框的演示&#xff1a;
这里写图片描述
可选择对话框的演示&#xff1a;
这里写图片描述
单选对话框的演示&#xff1a;
这里写图片描述
多选对话框的演示&#xff1a;
这里写图片描述


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
author-avatar
big覀bang-5201314
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有