Android 最新实现沉浸式状态栏、底部导航栏、任务栏及Actionbar添加搜索框及自定义菜单等功能的实现完整代码
2023-09-11 14:15:13 时间
效果如图:
MainActivity完整代码
package com.example.actionbar_test;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.view.*;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//更改页面标题
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("ActionBar测试沉浸式");
//隐藏标题栏
//actionBar.hide();
//显示左侧返回箭头
actionBar.setDisplayHomeAsUpEnabled(true);
//actionBar.setTitle("搜索功能");
//actionBar.setSubtitle("我是搜索功能的副描述文字信息.");
//一、将十六进制颜色值转为int类型color
int color = Color.parseColor("#1E90FF");// 1E90FF 4169E1 fafafa
//二、将int类型color值转为Drawable类型
ColorDrawable drawable = new ColorDrawable(color);
//三、将drawable设置给actionbar
actionBar.setBackgroundDrawable(drawable);
//沉浸式状态栏,导航栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//getWindow().setStatusBarColor(getResources().getColor(R.color.colorPrimary));//设置状态栏颜色
getWindow().setStatusBarColor(color);//设置状态栏颜色
getWindow().setNavigationBarColor(color); //设置导航栏颜色
}
}
//菜单的点击事件
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.save:
Toast.makeText(this, "保存", Toast.LENGTH_SHORT).show();
break;
case R.id.setting:
Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show();
break;
case R.id.add:
Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show();
break;
case R.id.about:
Toast.makeText(this, "关于", Toast.LENGTH_SHORT).show();
break;
case R.id.back:
Toast.makeText(this, "退出", Toast.LENGTH_SHORT).show();
finish();
break;
default:super.onOptionsItemSelected(item);
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//使用菜单填充器获取menu下的菜单资源文件
getMenuInflater().inflate(R.menu.tool_menu,menu);
MenuItem searchItem=menu.findItem(R.id.search);
//获取搜索的菜单组件
SearchView searchView = (SearchView) searchItem.getActionView();
//添加一个提交按钮
searchView.setSubmitButtonEnabled(true);
//设置默认搜索的文字
//searchView.setQuery("ok", false);
//设置默认搜索提示文字
searchView.setQueryHint("请输入搜索关键字...");
//默认把searchView展开
//searchItem.expandActionView();
//使searView清除焦点,关闭输入法键盘
//searchView.clearFocus();
//设置搜索的响应事件
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast t = Toast.makeText(MainActivity.this, query, Toast.LENGTH_SHORT);
t.setGravity(Gravity.TOP,0,0);
t.show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
}
tool_menu布局文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
android:icon="@drawable/ic_baseline_search_24"
android:title="搜索"
app:showAsAction="always|collapseActionView"/>
<item
android:id="@+id/add"
android:icon="@drawable/ic_baseline_add_circle_outline_24"
android:title="添加"
app:showAsAction="always|collapseActionView"/>
<item
android:title="保存"
android:id="@+id/save"
app:showAsAction="ifRoom"/>
<item
android:title="设置"
android:id="@+id/setting"/>
<item
android:title="更多">
<menu>
<item android:title="退出"
android:id="@+id/back"/>
<item android:title="关于"
android:id="@+id/about"/>/>
</menu>
</item>
</menu>
相关文章
- Android性能优化Google课程翻译一:Render----OverDraw实战
- Android 开源项目android-open-project解析之(二) GridView,ImageView,ProgressBar,TextView
- Android开发系列(二十一):Spinner的功能和使用方法以及实现列表选择框
- Xamarin Android中引用Jar包的方法
- Android中focusable属性的妙用——底层按钮的实现
- Android入门教程(一)
- 解决Android SDK Manager更新失败问题
- 《Java和Android开发学习指南(第2版)》——第2章,第2.3节基本类型
- 《Android游戏开发详解》一1.5 运算
- 《Android开发秘籍(第2版)》——第1.3节运行Android的设备
- 《Android开发基础教程》——扩展练习
- Android: 分页浏览的利器 android View Pager
- Android类参考---Fragment
- android 中的 ViewPager+ Fragment
- 【VLC-Android】vlc-android简例
- Android原理揭秘系列之一动态墙纸
- Android权限设置android.permission完整列表
- Android蓝牙A2DP连接实现
- Android Studio报错:Could not find method android() for arguments
- 2023年Android开发现状~
- 解决Android SDK Manager下载问题和android studio每次启动都要在fetching Android sdk compoment information
- 2019最新 国内唯一的Android从程序员到架构师全套教程
- 将Android封装库通过gradle部署到maven私服并依赖使用
- 2014非常好用的开源Android测试工具
- Android学习笔记之:android更新ui的几种经常用法
- 【winows7+android-ndk-r9+Cygwin 】cocos2dx 2.*游戏移植Android平台完全手册
- [Android] android:visibility属性应用
- android_我的第一个Android程序
- [Android Studio] Android Studio Virtual Device(AVD)虚拟机的功能试用