返回顶部
首页 > 资讯 > 移动开发 >Android如何解决虚拟按键栏遮挡问题
  • 145
分享到

Android如何解决虚拟按键栏遮挡问题

2024-04-02 19:04:59 145人浏览 薄情痞子
摘要

最近在公司的项目中 , 华为用户反馈出了一个问题 , 华为手机底部有虚拟按键栏把应用的底部内容遮挡住了 , 现在已经把这个问题解决了 , 记录一下,给各位遇到相同问题的童鞋做一下参考

最近在公司的项目中 , 华为用户反馈出了一个问题 , 华为手机底部有虚拟按键栏把应用的底部内容遮挡住了 , 现在已经把这个问题解决了 , 记录一下,给各位遇到相同问题的童鞋做一下参考.

这里的解决方案还是相对比较简单的,首先判断用户的手机是否存在虚拟按键,若存在,那么就获取虚拟按键的高度,然后再用代码设置相同高度的TextView,这样手机的虚拟按键就不会将底部的内容遮挡住了。

处理虚拟按键栏工具类:


public class ScreenUtils {
  //获取虚拟按键的高度
  public static int getNavigationBarHeight(Context context) {
    int result = 0;
    if (hasNavBar(context)) {
      Resources res = context.getResources();
      int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "Android");
      if (resourceId > 0) {
        result = res.getDimensionPixelSize(resourceId);
      }
    }
    return result;
  }

  
  @Targetapi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
  public static boolean hasNavBar(Context context) {
    Resources res = context.getResources();//读取系统资源函数
    int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android");//获取资源id
    if (resourceId != 0) {
      boolean hasNav = res.getBoolean(resourceId);
      // check override flag
      String sNavBarOverride = getNavBarOverride();
      if ("1".equals(sNavBarOverride)) {
        hasNav = false;
      } else if ("0".equals(sNavBarOverride)) {
        hasNav = true;
      }
      return hasNav;
    } else { // fallback
      return !ViewConfiguration.get(context).hasPermanentMenuKey();
    }
  }

  
  private static String getNavBarOverride() {
    String sNavBarOverride = null;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
      try {
        Class c = Class.forName("android.os.SystemProperties");
        Method m = c.getDeclaredMethod("get", String.class);
        m.setAccessible(true);
        sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");
      } catch (Throwable e) {
      }
    }
    return sNavBarOverride;
  }
}

调用工具类方法 , 获取虚拟按键高度:


//处理虚拟按键
//判断用户手机机型是否有虚拟按键栏       
 if(ScreenUtils.hasNavBar(getApplicationContext())){
  setNavigationBar();
  }

 //处理虚拟按键
 private void setNavigationBar() {
  int barHeight = ScreenUtils.getNavigationBarHeight(getApplicationContext());
  LinearLayout.LayoutParams barParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
  TextView tv = new TextView(this);
  tv.setHeight(barHeight);
  tv.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
  tv.setBackgroundColor(Color.BLACK);
  llNavigationBar.addView(tv,barParams);
 }

到这里就结束啦!

以上就是Android如何解决虚拟按键栏遮挡问题的详细内容,更多关于Android 虚拟按键栏遮挡的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android如何解决虚拟按键栏遮挡问题

本文链接: https://www.lsjlt.com/news/122356.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android如何解决虚拟按键栏遮挡问题
    最近在公司的项目中 , 华为用户反馈出了一个问题 , 华为手机底部有虚拟按键栏把应用的底部内容遮挡住了 , 现在已经把这个问题解决了 , 记录一下,给各位遇到相同问题的童鞋做一下参考...
    99+
    2024-04-02
  • android虚拟键盘弹出遮挡登陆按钮问题的解决方法
    Android虚拟键盘的弹起会遮挡住部分ui,虽然通过在清单文件中设置,可以随着虚拟键盘的弹出,布局往上推,但是面对登陆界面时,并没有太大的作用,这样就会导致用户体验不好;开发...
    99+
    2022-06-06
    登陆 方法 按钮 Android
  • React-Native如何解决键盘遮挡问题
    这篇文章主要介绍了React-Native如何解决键盘遮挡问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在开发中经常遇到需要输入的地方,...
    99+
    2024-04-02
  • Android优雅的方式解决软键盘遮挡按钮问题
    前言 比如在进行登录的操作中,用户输入完密码之后,肯定是想直接点击登录按钮的。返回键隐藏软键盘这样的体验肯定很糟糕,程序员,遇到问题解决问题。 实现1 xml <Sc...
    99+
    2022-06-06
    软键盘 按钮 Android
  • android应用中程序虚拟键盘弹出遮挡登陆按钮如何解决
    本篇文章给大家分享的是有关android应用中程序虚拟键盘弹出遮挡登陆按钮如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码实现如下;private LinearLay...
    99+
    2023-05-31
    android roi
  • Android应用中出现软键盘遮挡住按钮如何解决
    Android应用中出现软键盘遮挡住按钮如何解决?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如图:实现1xml<ScrollViewandroid:id="@...
    99+
    2023-05-31
    android roi
  • 如何解决Android 沉浸式状态栏和华为虚拟按键冲突问题
    这篇文章主要介绍如何解决Android 沉浸式状态栏和华为虚拟按键冲突问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先看下实现的效果图:这是我自己的手机,OnePlus 3T 7.1.1版本(免费广告,没给我钱的...
    99+
    2023-05-30
    android
  • Android开发软键盘遮挡登陆按钮的完美解决方案
    在应用登陆页面我们需要填写用户名和密码。当填写这些信息的时候,软键盘会遮挡登陆按钮,这使得用户体验较差,所以今天就来解决这个问题 1:登陆布局界面如下 <?x...
    99+
    2022-06-06
    登陆 android开发 解决方案 软键盘 按钮 Android
  • iOS新版微信底部工具栏遮挡问题完美解决
    一、问题描述: 苹果设备(iOS)微信中打开H5页面,从首页跳转到其他页面后,页面的底部会出现一个带有前进和后退按钮工具栏,而该工具栏会遮挡住面底部的内容,影响页面的正常使用。 二...
    99+
    2022-05-17
    iOS 微信 底部 遮挡
  • 如何解决layer弹层遮罩挡住窗体的问题
    这篇文章主要介绍如何解决layer弹层遮罩挡住窗体的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用代码:<div>    <d...
    99+
    2024-04-02
  • css中如何解决绝对定位元素被遮挡的问题
    这篇文章主要介绍css中如何解决绝对定位元素被遮挡的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体方法如下:ie7下绝对定位元素即使z-index值很高,如果其设置相对定位的...
    99+
    2024-04-02
  • 如何解决layui弹出层layer中area过大被遮挡的问题
    小编给大家分享一下如何解决layui弹出层layer中area过大被遮挡的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!la...
    99+
    2024-04-02
  • 如何解决Vue开发中对话框被遮罩层挡住的问题
    这篇文章将为大家详细讲解有关如何解决Vue开发中对话框被遮罩层挡住的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Vue的开发中,一旦我们用到对话框,经常出现的问题...
    99+
    2024-04-02
  • vue如何解决文本框被键盘遮住的问题
    小编给大家分享一下vue如何解决文本框被键盘遮住的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!如下所示:我把它写成了组件主...
    99+
    2024-04-02
  • Android实现登陆页logo随键盘收放动态伸缩(完美解决键盘弹出遮挡控件的问题)
    在最近的两个项目中,项目需求要求我们实现 这样的效果,宝宝心里苦呀,本来半天搞定的事还非得折腾一下,好吧我妥协,毕竟我还是一只非常注重用户体验的猿。 那就做吧,初步定下的方案...
    99+
    2022-06-06
    登陆 动态 Android
  • vmware虚拟机黑屏问题如何解决
    今天小编给大家分享一下vmware虚拟机黑屏问题如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.问题描述大多数同学...
    99+
    2023-07-05
  • 如何解决虚拟机蓝屏的问题
    虚拟机蓝屏通常是由操作系统或虚拟化软件出现问题导致的。以下是一些解决虚拟机蓝屏问题的方法: 重新启动虚拟机:首先尝试重新启动虚拟机,看是否能够解决问题。 检查虚拟机配置:确保虚拟机的配置符合操作系统的要求,如内存、处理器核心数等。 ...
    99+
    2024-06-11
    virtualbox
  • 如何解决虚拟机死机的问题
    虚拟机死机可能是由多种原因引起的,以下是一些解决方法: 重启虚拟机:尝试通过虚拟机控制台或者虚拟机管理软件进行重启,看是否能够解决问题。 检查虚拟机配置:确保虚拟机的配置符合系统要求,比如内存、CPU等资源是否足够。 检查虚拟机...
    99+
    2024-06-11
    virtualbox
  • 如何解决虚拟机克隆失败的问题
    虚拟机克隆失败可能有多种原因,以下是一些可能的解决方法: 检查硬件资源:确保主机服务器有足够的内存和存储空间来支持虚拟机克隆操作。 检查网络连接:确保虚拟机能够正常连接到网络,以便进行克隆操作。 检查虚拟机配置:检查虚拟机的配置...
    99+
    2024-06-10
    virtualbox
  • 如何解决虚拟机无法启动的问题
    要解决虚拟机无法启动的问题,可以尝试以下方法: 检查虚拟机的配置是否正确:确保虚拟机的配置信息正确,包括CPU、内存、硬盘等参数设置。 检查虚拟机文件是否完整:确认虚拟机文件没有损坏或丢失,可以尝试重新下载或者从备份文件中恢复虚拟机...
    99+
    2024-06-10
    virtualbox
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作