悬浮按钮和可交互提示的使用

news/2025/2/3 15:43:09 标签: 交互

xmlns:app=“http://schemas.android.com/apk/res-auto”

xmlns:tools=“http://schemas.android.com/tools”

android:id=“@+id/drawerLayout”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

tools:context=“.MainActivity”>

<androidx.coordinatorlayout.widget.CoordinatorLayout

android:layout_width=“match_parent”

android:layout_height=“match_parent”>

<androidx.appcompat.widget.Toolbar

android:id=“@+id/toolbar”

android:background=“#969C99”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”/>

<com.google.android.material.floatingactionbutton.FloatingActionButton

android:id=“@+id/fab”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“bottom|end”

android:layout_margin=“16dp”

android:src=“@drawable/yes”

app:elevation=“8dp”

/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

<com.google.android.material.navigation.NavigationView

android:id=“@+id/navView”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:layout_gravity=“start”

app:menu=“@menu/nav_menu”

app:headerLayout=“@layout/nav_header”/>

</androidx.drawerlayout.widget.DrawerLayout>

4.修改MainActivity.java

import androidx.annotation.NonNull;

import androidx.appcompat.app.ActionBar;

import androidx.appcompat.app.AppCompatActivity;

import androidx.appcompat.widget.Toolbar;

import androidx.core.view.GravityCompat;

import androidx.drawerlayout.widget.DrawerLayout;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Toast;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

import com.google.android.material.navigation.NavigationView;

import com.google.android.material.snackbar.Snackbar;

/**

*/

public class MainActivity extends AppCompatActivity {

private DrawerLayout mDrawerLayout;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Toolbar toolbar=findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

mDrawerLayout=findViewById(R.id.drawerLayout);

NavigationView navigationView=findViewById(R.id.navView);

FloatingActionButton fab=findViewById(R.id.fab);//悬浮按钮

fab.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//可交互提示

Snackbar.make(v,“删除”,Snackbar.LENGTH_SHORT)

.setAction(“取消”, new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(MainActivity.this,“已取消”,Toast.LENGTH_SHORT).show();

}

}).show();

}

});

ActionBar actionBar=getSupportActionBar();

if (actionBar!=null){

actionBar.setDisplayHomeAsUpEnabled(true);

actionBar.setHomeAsUpIndicator(R.drawable.menu);

}

// navigationView.setCheckedItem(R.id.navCall);//默认选中

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

@Override

public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

switch (menuItem.getItemId()){

case R.id.navCall:

Toast.makeText(MainActivity.this,“电话”,Toast.LENGTH_SHORT).show();

break;

case R.id.navFriends:

Toast.makeText(MainActivity.this,“朋友”,Toast.LENGTH_SHORT).show();

break;

case R.id.navLocation:

Toast.makeText(MainActivity.this,“地址”,Toast.LENGTH_SHORT).show();

break;

case R.id.nav_email:

Toast.makeText(MainActivity.this,“邮箱”,Toast.LENGTH_SHORT).show();

break;

case R.id.navTask:

Toast.makeText(MainActivity.this,“任务”,Toast.LENGTH_SHORT).show();

break;

}

mDrawerLayout.closeDrawers();

return true;

}

});

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.toolbar,menu);

return true;

}

@Override

public boolean onOptionsItemSelected(@NonNull MenuItem item) {


http://www.niftyadmin.cn/n/5840895.html

相关文章

< 自用文儿 制作 (自签名) 证书脚本 > script: certificate-generator.sh (分享)

# Created by Dave on 1Feb.2025 原因&#xff1a; 手机浏览器不能解析 NAS 主机名&#xff0c;如果用 DNS 就要变得太复杂。改回用 IP 方式来打开 Navigator 主页上面这些在 docker 上面运行的 20来个 web apps 应该是最优解。 觉得证书&#xff0c;还会再生成的&#xff0…

Hot100之矩阵

73矩阵置零 题目 思路解析 收集0位置所在的行和列 然后该行全部初始化为0 该列全部初始化为0 代码 class Solution {public void setZeroes(int[][] matrix) {int m matrix.length;int n matrix[0].length;List<Integer> list1 new ArrayList<>();List<…

在Arm芯片苹果Mac系统上通过homebrew安装多版本mysql并解决各种报错,感谢deepseek帮助解决部分问题

背景&#xff1a; 1.苹果设备上安装mysql&#xff0c;随着苹果芯片的推出&#xff0c;很多地方都变得不一样了。 2.很多时候为了老项目能运行&#xff0c;我们需要能安装mysql5.7或者mysql8.0或者mysql8.2.虽然本文编写时最新的默认mysql已经是9.2版本。 安装步骤 1.执行hom…

代理模式——C++实现

目录 1. 代理模式简介 2. 代码示例 1. 代理模式简介 代理模式是一种行为型模式。 代理模式的定义&#xff1a;由于某些原因需要给某对象提供一个代理以控制该对象的访问。这时&#xff0c;访问对象不适合或者不能直接访问引用目标对象&#xff0c;代理对象作为访问对象和目标…

【Proteus】NE555纯硬件实现LED呼吸灯效果,附源文件,效果展示

本文通过NE555定时器芯片和简单的电容充放电电路,设计了一种纯硬件实现的呼吸灯方案,并借助Proteus仿真软件验证其功能。方案无需编程,成本低且易于实现,适合电子爱好者学习PWM(脉宽调制)和定时器电路原理。 一、呼吸灯原理与NE555功能分析 1. 呼吸灯核心原理 呼吸灯的…

Linux网络 HTTPS 协议原理

概念 HTTPS 也是一个应用层协议&#xff0c;不过 是在 HTTP 协议的基础上引入了一个加密层。因为 HTTP的内容是明文传输的&#xff0c;明文数据会经过路由器、wifi 热点、通信服务运营商、代理服务器等多个物理节点&#xff0c;如果信息在传输过程中被劫持&#xff0c;传输的…

Kafka流式计算架构

引言 Kafka 凭借其卓越的架构设计&#xff0c;具备极为高效的流式计算能力&#xff0c;在海量数据环境下&#xff0c;依然能够以惊人的速度实现消息的高性能消费&#xff0c;轻松应对高并发、低延迟的严苛业务需求。无论是实时数据处理、复杂事件分析&#xff0c;还是大规模数…

在亚马逊云科技上用Stable Diffusion 3.5 Large生成赛博朋克风图片(上)

背景介绍 在2024年的亚马逊云科技re:Invent大会上提前预告的Stable Diffusion 3.5 Large&#xff0c;现在已经在Amazon Bedrock上线了&#xff01;各位开发者们现在可以使用该模型&#xff0c;根据文本提示词文生图生成高质量的图片&#xff0c;并且支持多种图片风格生成&…