首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

修复android中Activity中屏幕底部的视图

修复Android中Activity中屏幕底部的视图,可以采用以下方法:

  1. 使用RelativeLayout或ConstraintLayout布局

使用RelativeLayout或ConstraintLayout布局可以方便地将视图固定在屏幕底部。例如,使用RelativeLayout布局:

代码语言:xml<RelativeLayout 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"
    tools:context=".MainActivity">

    <View
        android:id="@+id/bottom_view"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentBottom="true"
        android:background="@android:color/darker_gray" />

</RelativeLayout>
  1. 使用CoordinatorLayout布局

使用CoordinatorLayout布局可以实现更多的交互效果,例如滚动隐藏或显示底部视图。例如,使用CoordinatorLayout布局:

代码语言:xml<androidx.coordinatorlayout.widget.CoordinatorLayout 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=".MainActivity">

    <View
        android:id="@+id/bottom_view"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@android:color/darker_gray"
        app:layout_anchorGravity="bottom" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>
  1. 使用FrameLayout布局

使用FrameLayout布局可以将视图叠加在其他视图上,例如:

代码语言:xml<FrameLayout 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"
    tools:context=".MainActivity">

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white" />

    <View
        android:id="@+id/bottom_view"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_gravity="bottom"
        android:background="@android:color/darker_gray" />

</FrameLayout>
  1. 使用ConstraintLayout布局

使用ConstraintLayout布局可以将视图固定在屏幕底部,例如:

代码语言:xml<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">

    <View
        android:id="@+id/bottom_view"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        app:layout_constraintBottom_toBottomOf="parent"
        android:background="@android:color/darker_gray" />

</androidx.constraintlayout.widget.ConstraintLayout>

以上是修复Android中Activity中屏幕底部的视图的常见方法,可以根据实际需求选择合适的布局方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android修复

主流修复方案: 1. 底层替换 - AndFix 在运行时替换掉底层有Bug方法地址,将他们指针指向修复之后方法内存地址,从而实现热修复功能。...类加载方案 - Tinker、QZone 利用Android类加载机制dexElements,将修复之后dex文件放置到dexElements前面,屏蔽掉有问题dex文件加载,从而实现热修复功能...Android类加载是通过DexClassLoader,在DexClassLoader中使用DexpathList将所有的dex文件加载到dexElements数组,在进行.class加载时候,...Android在加载类时候,会遍历pathList对象dexElements数组,该数据是apk下所有dex文件信息,在开始加载class文件时候,会遍历dexElements数组,查看class...在Android10上禁止了dex文件动态加载,所以无法对基准版本和patch文件dex进行合并优化,从而无法实现类替换功能,Tinker针对Android10,通过反射机制PackageManagerService

1.9K10

Android Fragment与Activity通讯详解

Android Fragment与Activity通讯详解 与activity通讯 尽管fragment实现是独立于activity,可以被用于多个activity,但是每个activity所包含是同一个...Fragment可以调用getActivity()方法很容易得到它所在activity对象,然后就可以查找activity控件们(findViewById())。...一个好办法是在fragment定义一个回调接口,然后在activity实现之。 例如,还是那个新闻程序例子,它有一个activityactivity中含有两个fragment。...当fragment添加到activity时,会调用fragment方法onAttach(),这个方法适合检查activity是否实现了OnArticleSelectedListener接口,检查方法就是对传入...onListItemClick()传入参数id是列表被选中行ID,另一个fragment用这个ID来从程序ContentProvider取得标题内容。

66631

Android 7.0 Launcher 启动 Activity 过程

等基本上在application和activity所有生命周期调用方法。...ActivityStack:为了让这许多 Activity协同工作而不至于产生混乱,Android平台设计了一种堆栈机制用于管理Activity,其遵循先进后出原则,系统总是显示位于栈顶Activity...而查找过程是通过AMSmHistory来处理 (1)查找mHistory是否有与要启动activity相同affinitytask,这点上面已经明述。...(2)如果activityandroid:taskAffinity属性为空,此时AMS就会去mHistory通过比较task.intent.getComponent()和启动activityComeponent...这一步android四大组建都会在这里等着初始化。在这个方法,先获取stacktop running Activity。什么情况下我们该启动它呢?

3.5K10

Android Studio 获取屏幕宽度实例

获取整个屏幕宽度实例 Point p = new Point(); //获取窗口管理器 WindowManager wm = (WindowManager) context.getSystemService...(Context.WINDOW_SERVICE); wm.getDefaultDisplay().getSize(p); screenWidth = p.x; // 屏幕宽度 补充知识:Android屏幕适配之动态设置单个控件宽高比例...要求图、文各占一半大小,图片宽高比例目测是1:2。这种情况不适合把高度写死,因为iPad屏幕大小差异有些大,高度写死图片hin容易变形,因此我们就需要动态去设置这个图片宽高。...正题:首先我们已知图片宽度是屏幕一半,所以我们只要获取图片宽度,然后设置高度为宽度1/2即可。...以上这篇Android Studio 获取屏幕宽度实例就是小编分享给大家全部内容了,希望能给大家一个参考。

2.8K20

Android 返回堆栈管理】打印 Android 当前运行 Activity 任务栈信息 | Activity 任务栈信息分析 | Activity 在相同 Stack 不同 Task

文章目录 一、打印 Android 当前运行 Activity 任务栈信息 二、Activity 任务栈信息分析 三、Activity 在相同 Stack 不同 Task 情况 一、打印 Android...当前运行 Activity 任务栈信息 ---- 使用如下命令 , 打印 Android 手机 Activity 栈 : adb shell dumpsys activity activities...; 默认状态下 , 相同应用 , 打开 Activity , 其 Activity 都在同一个任务栈 ; 三、Activity 在相同 Stack 不同 Task 情况 ---- 默认状态下..., 同一个应用启动两个 Activity 都在相同 Stack 相同 Task , 但是如下情况会出现 Activity 在相同 Stack 不同 Task ; 参考 【Android...singleTask 启动模式 , 则新启动 Activity 放在另一个 Task ; 注意 : 两个 Activity 虽然在不同 Task 任务 , 但还是在相同 Stack 栈

5.5K10

Android视图焦点Focus详细介绍

在非触摸屏设备接收事件和处理响应控件是具有焦点(Focused)控件。一个窗口中一个时间内只能有一个具有焦点控件。...在早期具有滚轮设备android系统以及现在智能TV电视应用中视图焦点控制就非常重要了。...比如某个视图层次下视图ROOT下有A,B,C三个子视图,而B下面又有B1,B2,B3三个子视图,而这时候B3是具有焦点视图,那么在BmFocued保存是B3,而ROOT下mFocued保存是...如果都没有焦点视图时则返回null public View findFocus() 下面的方法是ViewGroup方法,获取直接焦点子视图,也就是返回mFocued数据成员。...如果是ViewGroup则根据setDescendantFocusability规则进行:如果是阻止子视图则自己进行焦点获取,否则就按规则先子节点或者后子节点。

2.4K20

android实现上滑屏幕隐藏底部菜单栏示例

本篇文章引用github上一个仿今日头条项目,项目地址: https://github.com/iMeiji/Toutiao ,主要实现功能是底部菜单栏随用户手势滑动而变化可见状态 ? ?...com.meiji.toutiao.widget.behavior.BottomNavigationBehavior" app:menu="@menu/bottom_navigation_main"/ 上面是activity_main...这次我们通过自定义这个behavior类,实现底部菜单栏显隐性。...onStartNestedScroll:这个方法主要用于监听协调布局子view滚动事件,当此方法返回true,表示要消耗此动作,继而执行下面的 onNestedPreScroll 方法,我们在代码返回是...如果是的话,就返回true onNestedPreScroll:这个方法就比较简单了,当用户上滑时候,隐藏底部菜单栏,这里使用了动画退出,使用了 ObjectAnimator.ofFloat 方法,第一个是

2.1K31

Android activity 生命周期和数据储存

Activity 作为 Android 四大组件之一,其与用户接触机会最多,所以灵活运用 activity 类能够让我们程序用户体验感更好。...这个图想必各位朋友已经看过了,我们来解释一下图片中方法作用: 上图中方法为继承 activity派生类覆盖实现方法,从 activity 对象创建到结束被摧毁都是在这些方法循环调用 @Override...如果想在屏幕显示方向改变或者屏幕尺寸改变时系统不杀死当前 activity 对,我们需要在当前工程配置文件配置一段代码。具体实现如下: ?...在当前工程配置文件 AndroidManifest.xml  activity标签中加入 :android:configChanges="orientation|keyboardHidden|screenSize..." 属性(API 等级 13 以上时要加 screenSize 属性,不然没有效果) ,该配置表明当 Android 设备屏幕方向、物理键盘(滑盖键盘)、屏幕大小状态改变时不用系统去处理,而是转由当前

79220

Android 如何确定 App(Activity) 启动者

最近在帮忙定位一个问题,涉及到某个应用自动启动了,为了确定是谁调用,使用如下日志进行查看(注:为了简单考虑,下面的启动者为launcher) 1 2 3 4 (pre_release|✔) % adb...cat=[android.intent.category.HOME] flg=0x10000000 hwFlg=0x10 cmp=com.huawei.android.launcher/.unihome.UniHomeLauncher...u0_a70 含义 u0 默认手机第一个用户(可以通过设置里面的多用户新增和切换) a 代表app 70 代表着第70个应用 转换公式 简单而言,对应公式是这样 u0_a70 = “u0_” +...References https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/Process.java...https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/UserHandle.java

3.1K20

Android查看当前Activity是否销毁操作

进入到Android-sdkplatform-tools目录 在命令行执行以下命令 adb shell dumpsys activity activity.txt 可以将当前四大组件 (Activity...,Service,BroadCase,ContentProvider) 存在情况打印到当前目录activity.txt文件 然后进入打印文件搜索: ACTIVITY MANAGER ACTIVITIES...(dumpsys activity activities) 补充知识:打开另一个Activity时前一个Activity被销毁问题解决办法 在开发,一个Activity需要默认横屏全屏显示,...在这里设置横屏方式是在AndroidManifest.xml配置: <style name="FullScreenTheme" parent="AppTheme" <item name="<em>android</em>..., WindowManager.LayoutParams.FLAG_FULLSCREEN); 以上这篇在<em>Android</em><em>中</em>查看当前<em>Activity</em>是否销毁<em>的</em>操作就是小编分享给大家<em>的</em>全部内容了,希望能给大家一个参考

1.6K20

AndroidActivity7个回调方法

第一行代码安卓第二版P65页: onCreate()这个方法你已经看到过很多次了,每个活动我们都重写了这个方法,它会在活动第一次被创建时候调用,你应该在这个方法完成活动初始化操作,比如加载布局...以上7个方法除了 onRestart()方法,其他都是两两相对,从而又可以将活动分为三种生存期。 完整生存期。...活动在onCreate()方法和onDestory()方法之间所经历,就是完整生存期,一般情况下,一个活动会在onCreate()方法完成各种初始化操作,而在onDestory()方法完成释放内存操作...我们可以通过这两个方法,合理地管理那些对用户可见资源,比如在onStart()方法对资源重载,在onStop()方法对资源进行释放,从而保证处于停止状态活动不会占用过多内存。 前台生存期。...在前台生存期呢,活动总是处于运行状态,此时活动是可以和用户进行交互,我们平时看到和接触最多也就是这个状态下活动。

1.2K20

Androidactivity从创建到显示基本介绍

前言 说道AndroidActivity,如果你做过iOS开发的话,Activity类似于iOSViewController(视图控制器)。在应用能看到东西都是放在活动。...iOSViewController也是有自己生命周期,了解Activity或者ViewController生命周期是很有必要,本文将详细给大家介绍关于Androidactivity从创建到显示相关内容...activity是我们平常开发最常用一个组件,我们有必要了解activity创建以及显示过程,这些应该作为我们储备知识。...Activity创建 Activity创建以及初始化过程是在ActivityThread#performLaunchActivity方法,在这个方法,有以下几个关键点, 创建Activity...(activity); } 在activity.performCreate,会调用activityonCreate方法,这个是我们平常开发中非常熟悉,在onCreate,我们调用setContentView

1.5K20

Android获得控件在屏幕绝对坐标

(location);//获取在整个屏幕绝对坐标 location [0]--->x坐标,location [1]--->y坐标 getLocationOnScreen 计算该视图在全局坐标系x...,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏高度)//获取在当前屏幕绝对坐标 getLocationInWindow 计算该视图在它所在widnow坐标x,y值,获取在整个窗口内绝对坐标...getLeft , getTop, getBottom,getRight 这一组是获取相对在它父亲里坐标 如果在ActivityOnCreate()事件输出那些参数,是全为0,要等UI控件都加载完了才能获取到这些...在onWindowFocusChanged(boolean hasFocus)获取为好 即覆写ActivityonWindowFocusChanged(boolean hasFocus)方法 XXX_Activity...//do something } 更多资料: Android View各种尺寸位置相关方法探究 PS:本文为转载,首发地址不可考,网上搜到全是转载,故不能贴出原地址,如果你是作者可以留言原地址或者要求删除

2K20

androidactivityonSaveInstanceState和onRestoreInstanceState触发时机

先看Application Fundamentals上一段话: Android calls onSaveInstanceState() before the activity becomes vulnerable...以下几种情况分析都遵循该原则 2、长按HOME键,选择运行其他程序时。 3、按下电源按键(关闭屏幕显示)时。 4、从activity A启动一个新activity时。...5、屏幕方向切换时,例如从竖屏切换到横屏时。...在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState一定会被执行 总而言之,onSaveInstanceState...bundle参数也会传递到onCreate方法,你也可以选择在onCreate方法做数据还原 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/121423.html

28120

获取屏幕上正在显示activity 博客分类: Android小技巧

用过ActivityManager童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行所有任务,所有进程和所有服务,这是任务管理器核心。...仔细看getRunningTasks文档,里面说获取是系统"running"所有task,"running"状态包括已经被系统冻结task。...而且返回这个列表是按照顺序排列,也就是说第一个肯定比第二个后运行。 getRunningTasks有个整型参数,表示返回列表最大个数。...那么,我们如果把1作为参数给进去,那么他返回task就是当前运行那个task,然后从task获取到最顶层activity,这个activity就是当前显示给用户那个activity了。...ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks

2.8K30
领券