目录

  • 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——消息提示控件相关推荐

  1. Qt QWidget实现消息提示控件TipsWidget

    前言 用Qt实现一个消息提示控件,控件宽度会根据显示的内容多少来动态伸展,控件显示三秒钟过后会自动渐变透明度然后最终消失,这有点类似于Android的Toast控件,都是用于消息短暂提示. 源码 头文 ...

  2. android 气球提示控件,控件Balloons(气球状提示)设计原则

    问题摘要 气球状提示(Balloon)是一个小型的弹出窗口,用于通知用户出现非关键性问题或控件处于某种特殊情况. 实例 图1 注:气球状提示由图标.标题.正文文本组成,且所有这些部分都是可选的. 注: ...

  3. 解决Android Studio不提示控件的XML属性

    大家好:我国著名数学家华罗庚先生曾经说过:"聪明出于勤奋,天才在于积累."衷心希望各位坚守本心,实现中华民族伟大复兴的中国梦! 一.问题背景 上一篇文章向大家介绍了如何利用WPS使 ...

  4. Android M 新控件了解学习

    Android M 新控件了解:FloatingActionButton,TextInputLayout,Snackbar,TabLayout, AppBarLayout,NavigationView ...

  5. [UWP]实现一个轻量级的应用内消息通知控件

    [UWP]实现一个轻量级的应用内消息通知控件 原文:[UWP]实现一个轻量级的应用内消息通知控件 在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDi ...

  6. Android的WebView控件载入网页显示速度慢的究极解决方案

    Android的WebView控件载入网页显示速度慢的究极解决方案 [转载来源自http://hi.baidu.com/goldchocobo/] Android客户端中混搭HTML页面,会出现虽然H ...

  7. 004 Android之其他控件

    文章目录 ListView ListView常用属性 ListView基本使用 ListView动态插入数据 ListView实现图文混排 Adapter Adapter(适配器种类) 自定义Adap ...

  8. android按钮控件常见问题,Android的基本控件和Activity的应用总结

    Android的基本控件 常用界面控件 TextView 显示文本信息 button 普通按钮 EditText 可编辑的文本框组件(输入框) ImageView 用于显示图片 ImageBUtton ...

  9. android 自定义view控件,Android 自定义View——自定义View控件

    Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个.那么如何自定义控件? 学习自 ...

最新文章

  1. Selenium3自动化测试——9.多窗口切换
  2. 华为鸿蒙不再孤单mmes,华为Watch GT2新色图赏 简约时尚设计新增100种运动模式
  3. springboot---request 中Parameter,Attribute区别
  4. 转】Eclipse编辑Spring配置文件xml时自动提示类class包名
  5. Firefox(火狐)下载时卡在最后1秒解决办法
  6. ParaSwap启动Aave V2集成,允许用户在V1和V2版之间进行套利
  7. 安装WampServer时出现的问题(丢失VCRUNTIME140.dll或MSVCR110.dll)以及解决办法
  8. SpringBoot使用MongoDB异常问题
  9. VC无闪烁刷屏技术的实现【转】
  10. ptp精准时间协议_PTP时钟协议原理
  11. 2022山东省安全员C证操作证考试题及答案
  12. 线性回归的神经网络法——机器学习
  13. 如何搭建适合自己团队的构建部署平台
  14. properties文件的用法;utils类封装数据库连接、资源关闭、通用的增删改,以及两种通用的查询方法
  15. 理解子网掩码和如何计算子网掩码
  16. 刚子扯谈:市场供需关系决定生存
  17. java程序设计心得_学习Java编程的学习方法总结
  18. 【操作教程】如何手动配置EasyNVR安防视频云服务平台的Onvif探测功能?
  19. JSON实例类 key可带中文
  20. 以计算为中心的下一代数据中心交换网络

热门文章

  1. 记一次报错:激活要求在clsid下游显示名称
  2. 湖北省专利申请指南,申请专利10大要点
  3. 无忧题库c语言,快来pick计算机等级考试题库:二级C语言试题
  4. Oracle11g修改数据文件路径
  5. js节点都有哪些类型?怎么判断是哪种节点类型?
  6. Sante DICOM 6IN1 Crack
  7. 用算法解决炸机问题,让大疆也服气的无人机公司
  8. Image Signal Processing(ISP)-第四章-LSC, CC的原理和软件实现
  9. css动画设置渐进渐出_具有srcset和CSS动画的渐进增强灯箱
  10. 如何使用合理的图像网格插件创建WordPress画廊