Android——消息提示控件
目录
- 1.Toast(吐司)
- 1.自定义Toast布局
- 2.运用
- 1.布局
- 2.MainActivity.java
- 3.效果展示
- 4.toast.setGravity()不起作用怎么办呢?
- 1.解决方法
- 2.AlertDailog(对话框)
- 1.使用对话框的步骤
- 2.运用
- 1.布局
- 2.AlertDialog_MainActivity.java
- 3.效果展示
- 3.PopupWindow(悬浮框)
- 1.与AlertDialog的区别
- 2.运用
- 1.布局
- 2.创建其他文件
- 3.PopupWindow_MainActivity2.java
- 3.效果展示
1.Toast(吐司)
Android用于提示信息的一个控件
1.自定义Toast布局
参考一下,后边有运用
LinearLayout layout=(LinearLayout) toast.getView();TextView v=layout.findViewById(android.R.id.message);v.setTextColor(Color.parseColor("#8BC34A"));layout.setBackgroundColor(Color.BLUE);ImageView imageView=new ImageView(this);imageView.setImageResource(R.mipmap.ic_launcher_round);layout.addView(imageView,0);
2.运用
通过静态方法makeText()创建出一个Toast对象,然后调用show()将Toast显示出来。
Toast.makeText(第一个参数,第二个参数,第三个参数);
第一个参数:第一个是Context,由于活动本身就是一个Context对象,使用当前Activity的名字也可以,使用下面这种方法也可以,意思都是一样的。
第二个参数:是你想要显示出来的内容。
第三个参数:Toast显示的时长。
Toast.LENGTH_SHORT相对Toast.LENGTH_LONG显示的时间比较短。
1.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按钮" /></LinearLayout>
2.MainActivity.java
import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);context=this;Toast toast=Toast.makeText(context,"吐司提示文本信息",Toast.LENGTH_SHORT);//设置Toast显示的位置toast.setGravity(Gravity.CENTER,0,0);//自定义toast布局LinearLayout layout=(LinearLayout) toast.getView();TextView v=layout.findViewById(android.R.id.message);v.setTextColor(Color.parseColor("#8BC34A"));layout.setBackgroundColor(Color.BLUE);ImageView imageView=new ImageView(this);imageView.setImageResource(R.mipmap.ic_launcher_round);layout.addView(imageView,0);Button button=findViewById(R.id.btn_1);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {toast.show();}});}
}
3.效果展示
默认情况下Toast的样式
自定义样式之后Toast的样式(根据自己喜欢的样式定义哦!)
4.toast.setGravity()不起作用怎么办呢?
哈哈!在写博客的过程中,我就遇到这个问题了。查找了很多别人写的博客,有说是因为要把这个设置为这样,但是修改之后发现还是不起作用,所以我出现的问题不是因为这个。
1.解决方法
出现报错信息 Toast: setGravity() shouldn’t be called on text toasts, the
values won’t be used
因为targetSdkVersion 30及以上版本不适用,设置成更低版本就可以了。
这是我的解决方法,仅供参考哦!
2.AlertDailog(对话框)
1.使用对话框的步骤
step 1:创建AlertDialog.Builder对象
step 2:调用setIcon设置图标,setTitle()或setCustomTitle()设置标题
step 3:设置对话框的内容,setMessage()还有其他方法来指定显示的内容
step 4:调用setNegativeButton / PositiveButton /NetralButton()设置:取消,确定,中立按钮
step 5:调用create()方法创建这个对象,再调用show()方法将对话框显示出来
2.运用
1.布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".AlertDialog_MainActivity"><Buttonandroid:id="@+id/btn_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示一个普通的Dialog"/><Buttonandroid:id="@+id/btn_2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示一个带普通列表的Dialog"/><Buttonandroid:id="@+id/btn_3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示一个带单选列表的Dialog"/><Buttonandroid:id="@+id/btn_4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="显示一个带复选框列表的Dialog"/></LinearLayout>
2.AlertDialog_MainActivity.java
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class AlertDialog_MainActivity extends AppCompatActivity implements View.OnClickListener {private Button button1;private Button button2;private Button button3;private Button button4;private Context context;private boolean[] checkItems;private AlertDialog alert=null;private AlertDialog.Builder builder=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_alert_dailog__main);context=this;bindView();}private void bindView(){button1=findViewById(R.id.btn_1);button2=findViewById(R.id.btn_2);button3=findViewById(R.id.btn_3);button4=findViewById(R.id.btn_4);button1.setOnClickListener(this);button2.setOnClickListener(this);button3.setOnClickListener(this);button4.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()){//普通对话框case R.id.btn_1:alert=null;builder=new AlertDialog.Builder(context);alert=builder.setIcon(R.mipmap.a1).setTitle("系统提示:").setMessage("这是一个最普通的AlertDialog,\n带有按个按钮").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"你点击了确定按钮",Toast.LENGTH_SHORT).show();}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"你点击了取消按钮",Toast.LENGTH_SHORT).show();}}).setNeutralButton("中立", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"你点击了中立按钮",Toast.LENGTH_SHORT).show();}}).create();alert.show();break;//普通列表对话框case R.id.btn_2:final String[] lesson=new String[]{"语文","数学","英语","生物","物理","化学"};alert=null;builder=new AlertDialog.Builder(context);alert=builder.setIcon(R.mipmap.a2).setTitle("选择你喜欢的课程").setItems(lesson, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"你选择了"+lesson[which],Toast.LENGTH_SHORT).show();}}).create();alert.show();break;//单选列表对话框case R.id.btn_3:final String[] fruits=new String[]{"香蕉","苹果","梨子","葡萄","西瓜","提子"};alert=null;builder=new AlertDialog.Builder(context);alert=builder.setIcon(R.mipmap.a2).setTitle("选择你喜欢的水果").setSingleChoiceItems(fruits, 0, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(context,"你选择了"+fruits[which],Toast.LENGTH_SHORT).show();}}).create();alert.show();break;//多选对话框case R.id.btn_4:final String[] menu=new String[]{"Android","Java","JavaWeb","高数","模电"};checkItems=new boolean[]{false,false,false,false,false};alert=null;builder=new AlertDialog.Builder(context);alert=builder.setIcon(R.mipmap.a3).setMultiChoiceItems(menu, checkItems, new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {checkItems[which]=isChecked;}}).setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String result="";for(int i=0;i<checkItems.length;i++){if(checkItems[i])result+=menu[i]+" ";}Toast.makeText(context,"你选择了"+result,Toast.LENGTH_SHORT).show();}}).setCancelable(false).create();alert.show();break;}}
}
3.效果展示
3.PopupWindow(悬浮框)
1.与AlertDialog的区别
本质区别:AlertDialog是非阻塞式的对话框:AlertDialog弹出时,后台还可以做事情;而PopupWindow是阻塞式对话框:PopupWindow弹出时,程序会等待,在PopupWindow退出前,程序一直等待,只有当我们调用了dismiss方法后,PopupWindow退出,程序才会向下执行。
AlertDialog弹出时,背景是暗色的(相对原先白色的来说的),但是当我们点击背景,AlertDialog会消失,证明程序不仅响应AlertDialog的操作,还响应其他操作,其他程序没有被阻塞,这说明AlertDialog是非阻塞式的对话框;
PopupWindow弹出时,背景没有什么变化,但是当我们点击背景的时候,程序没有响应,只允许我们操作PopupWindow,其他操作被阻塞。
2.运用
1.布局
PopupWindow_MainActivity2.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".PopupWindow_MainActivity2"><Buttonandroid:id="@+id/btn_5"android:layout_centerInParent="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="PopupWindow"/></RelativeLayout>
2.创建其他文件
创建设置动画的文件anim
anim_pop.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><!--fromAlpha:表示起始动画的透明度,1.0表示完全不透明0.0表示完全透明,值0.0~1.0之间toAlpha:表示动画结束时的透明度duration:动画持续时间,单位毫秒--><alphaandroid:duration="200"android:fromAlpha="0"android:toAlpha="1"></alpha>
</set>
创建PopupWindow里面的布局
item_pop.xml
<?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:orientation="vertical"><Buttonandroid:id="@+id/btn_6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="5dp"android:text="你好呀!"android:textSize="20sp"/><Buttonandroid:id="@+id/btn_7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="可爱多一点"android:textSize="20sp"/>
</LinearLayout>
3.PopupWindow_MainActivity2.java
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Toast;public class PopupWindow_MainActivity2 extends AppCompatActivity {private Button button;private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_popup_window__main2);context=this;button=findViewById(R.id.btn_5);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {initPopWindow(v);}});}public boolean onTounchEvent(MotionEvent event){return super.onTouchEvent(event);}private void initPopWindow(View v){View view= LayoutInflater.from(context).inflate(R.layout.item_pop,null,false);Button btn_6=view.findViewById(R.id.btn_6);Button btn_7=view.findViewById(R.id.btn_7);//构造一个PopupWindow,参数依次是加载的View,宽高final PopupWindow popupWindow=new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,true);popupWindow.setAnimationStyle(R.anim.anim_pop);//设置加载动画//这里为了点击非PopupWindow 区域,PopupWindow 会消失的。如果没有下面的//代码的话,你会发现,当你把PopupWindow 显示出来的时候,无论你按多少次后// PopupWindow 并不会关闭,而且退不出程序。popupWindow.setTouchable(true);popupWindow.setTouchInterceptor(new View.OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {return false;//如果是true,touch事件被拦截//拦截后PopupWindow 的onTouckEvent不被调用,这样点击外部区域无法dismiss}});//设置popupWindow显示的位置,参数依次是参照view,x轴的偏移量,y轴的偏移量popupWindow.showAsDropDown(v,50,0);//PopupWindow 里面的按钮事件btn_6.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(context,"你点击了你好呀!",Toast.LENGTH_SHORT).show();}});btn_7.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(context,"你点击了可爱多一点",Toast.LENGTH_SHORT).show();popupWindow.dismiss();}});}
}
3.效果展示
Android——消息提示控件相关推荐
- Qt QWidget实现消息提示控件TipsWidget
前言 用Qt实现一个消息提示控件,控件宽度会根据显示的内容多少来动态伸展,控件显示三秒钟过后会自动渐变透明度然后最终消失,这有点类似于Android的Toast控件,都是用于消息短暂提示. 源码 头文 ...
- android 气球提示控件,控件Balloons(气球状提示)设计原则
问题摘要 气球状提示(Balloon)是一个小型的弹出窗口,用于通知用户出现非关键性问题或控件处于某种特殊情况. 实例 图1 注:气球状提示由图标.标题.正文文本组成,且所有这些部分都是可选的. 注: ...
- 解决Android Studio不提示控件的XML属性
大家好:我国著名数学家华罗庚先生曾经说过:"聪明出于勤奋,天才在于积累."衷心希望各位坚守本心,实现中华民族伟大复兴的中国梦! 一.问题背景 上一篇文章向大家介绍了如何利用WPS使 ...
- Android M 新控件了解学习
Android M 新控件了解:FloatingActionButton,TextInputLayout,Snackbar,TabLayout, AppBarLayout,NavigationView ...
- [UWP]实现一个轻量级的应用内消息通知控件
[UWP]实现一个轻量级的应用内消息通知控件 原文:[UWP]实现一个轻量级的应用内消息通知控件 在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDi ...
- Android的WebView控件载入网页显示速度慢的究极解决方案
Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...
- 004 Android之其他控件
文章目录 ListView ListView常用属性 ListView基本使用 ListView动态插入数据 ListView实现图文混排 Adapter Adapter(适配器种类) 自定义Adap ...
- android按钮控件常见问题,Android的基本控件和Activity的应用总结
Android的基本控件 常用界面控件 TextView 显示文本信息 button 普通按钮 EditText 可编辑的文本框组件(输入框) ImageView 用于显示图片 ImageBUtton ...
- android 自定义view控件,Android 自定义View——自定义View控件
Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...
最新文章
- Selenium3自动化测试——9.多窗口切换
- 华为鸿蒙不再孤单mmes,华为Watch GT2新色图赏 简约时尚设计新增100种运动模式
- springboot---request 中Parameter,Attribute区别
- 转】Eclipse编辑Spring配置文件xml时自动提示类class包名
- Firefox(火狐)下载时卡在最后1秒解决办法
- ParaSwap启动Aave V2集成,允许用户在V1和V2版之间进行套利
- 安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
- SpringBoot使用MongoDB异常问题
- VC无闪烁刷屏技术的实现【转】
- ptp精准时间协议_PTP时钟协议原理
- 2022山东省安全员C证操作证考试题及答案
- 线性回归的神经网络法——机器学习
- 如何搭建适合自己团队的构建部署平台
- properties文件的用法;utils类封装数据库连接、资源关闭、通用的增删改,以及两种通用的查询方法
- 理解子网掩码和如何计算子网掩码
- 刚子扯谈:市场供需关系决定生存
- java程序设计心得_学习Java编程的学习方法总结
- 【操作教程】如何手动配置EasyNVR安防视频云服务平台的Onvif探测功能?
- JSON实例类 key可带中文
- 以计算为中心的下一代数据中心交换网络
热门文章
- 记一次报错:激活要求在clsid下游显示名称
- 湖北省专利申请指南,申请专利10大要点
- 无忧题库c语言,快来pick计算机等级考试题库:二级C语言试题
- Oracle11g修改数据文件路径
- js节点都有哪些类型?怎么判断是哪种节点类型?
- Sante DICOM 6IN1 Crack
- 用算法解决炸机问题,让大疆也服气的无人机公司
- Image Signal Processing(ISP)-第四章-LSC, CC的原理和软件实现
- css动画设置渐进渐出_具有srcset和CSS动画的渐进增强灯箱
- 如何使用合理的图像网格插件创建WordPress画廊