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

ConstraintLayout:如何以编程方式将屏幕划分为屏幕高度的两个相等部分

ConstraintLayout是一种用于Android应用开发的布局方式,它可以以编程方式将屏幕划分为屏幕高度的两个相等部分。在ConstraintLayout中,可以使用约束来定义视图之间的相对位置和大小关系,以实现灵活且响应式的布局。

为了将屏幕划分为屏幕高度的两个相等部分,可以按照以下步骤进行操作:

  1. 创建一个ConstraintLayout作为根布局。
  2. 在根布局中添加两个视图,分别表示要划分的两个部分。
  3. 为这两个视图添加约束,使它们相对于父布局的顶部和底部对齐,并且设置宽度和高度为0dp(match_constraint)。
  4. 设置这两个视图的layout_constraintHeight_default属性为percent,值为0.5,表示每个视图的高度占屏幕高度的50%。
  5. 为这两个视图设置layout_constraintVertical_bias属性为0和1,分别表示上方视图的偏移量为0,下方视图的偏移量为1。

以下是使用ConstraintLayout以编程方式将屏幕划分为屏幕高度的两个相等部分的示例代码:

代码语言:txt
复制
ConstraintLayout constraintLayout = findViewById(R.id.constraintLayout);

// 创建上方视图
View view1 = new View(this);
view1.setId(View.generateViewId());
constraintLayout.addView(view1);

// 创建下方视图
View view2 = new View(this);
view2.setId(View.generateViewId());
constraintLayout.addView(view2);

// 设置上方视图的约束
ConstraintSet set = new ConstraintSet();
set.clone(constraintLayout);

set.connect(view1.getId(), ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP);
set.connect(view1.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
set.constrainHeight(view1.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.constrainWidth(view1.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.setVerticalBias(view1.getId(), 0f);

// 设置下方视图的约束
set.connect(view2.getId(), ConstraintSet.TOP, view1.getId(), ConstraintSet.BOTTOM);
set.connect(view2.getId(), ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM);
set.constrainHeight(view2.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.constrainWidth(view2.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.setVerticalBias(view2.getId(), 1f);

set.applyTo(constraintLayout);

通过以上代码,我们可以将屏幕划分为两个高度相等的部分,并且可以根据需要调整各个视图的大小和位置。这种布局方式适用于需要在屏幕上垂直划分不同部分的场景,例如应用程序的顶部和底部导航栏或者分割屏幕显示不同内容等。

推荐的腾讯云相关产品:在这个问题中,并不涉及到特定的云计算产品。如果您有关于其他云计算相关的问题或者需要推荐腾讯云的产品,我将非常乐意为您提供帮助和支持。

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

相关·内容

深入浅出,官方文档看ConstraintLayout

A的可见性分为两种状态。...这种情况就感觉像是控件两边有两个反向相等大小的力在拉动它一样,所以才会产生控件居中的效果。...一般情况下,GONG控件是不可见的,且不再是布局的一部分,但是在布局计算上,ConstraintLayout与传统布局有一个很重要的区别: 传统布局下,GONE控件的尺寸会被认为是0(当做点来处理) 在...敲黑板,划重点 一般MATCH_PARENT在ConstraintLayout布局下是不支持的,但是在简单的布局结构(如控件的约束只与ConstraintLayout关联)下,MATCH_PARENT...至于为何高度填充屏幕而宽度不填充,其玄机在于下面这句话,能理解它,就理解了比例使用的精髓: ?

98340

深入浅出,官方文档看ConstraintLayout

/> 这种情况就感觉像是控件两边有两个反向相等大小的力在拉动它一样,所以才会产生控件居中的效果。...一般情况下,GONG控件是不可见的,且不再是布局的一部分,但是在布局计算上,ConstraintLayout与传统布局有一个很重要的区别: 传统布局下,GONE控件的尺寸会被认为是0(当做点来处理) 在...设置布局的最小高度 这些最小尺寸当ConstraintLayout被设置为WRAP_CONTENT时有效。...敲黑板,划重点:一般MATCH_PARENT在ConstraintLayout布局下是不支持的,但是在简单的布局结构(如控件的约束只与ConstraintLayout关联)下,MATCH_PARENT是被支持的...Ratio 至于为何高度填充屏幕而宽度不填充,其玄机在于下面这句话,能理解它,就理解了比例使用的精髓: In this case the system sets the largest dimensions

98830
  • Jetpack-Compose 学习笔记(二)—— Compose 布局你学会了么?

    但是这两种方式都不太优雅,尤其是嵌套过深,或者数据比较敏感,不想暴露给中间层的函数时,这种情况下,就可以使用 CompositionLocal 来隐式的将数据传递给所需的 composition 树节点...最后两个是用于国际化适配,因为有些语言是从右到左排列的,如阿拉伯语,所以如果要严格按照左右来区分的话,使用带 Absolute 的方法,这个跟 marginStart 和 marginLeft 概念差不多...而 guideline2 是在竖直方向上距离屏幕高度三分之一的位置,需要把父布局的高度设置为屏幕高度才可以实现。...Text 部分内容超出屏幕。。。。...,就是通过设置不同的 ConstraintSet 来实现的,如果布局元素很多,可以分为两个 ConstraintSet 对象来分别设置。

    3.3K31

    可折叠设备的桌面模式

    展开您的视频播放体验 可折叠设备向用户们提供了使用他们的手机做更多事情的可能性,包括*桌面模式**等创新,也就是当手机平放时,铰链处于水平位置,同时折叠屏幕处于部分打开的状态。...△ Duo 应用在优化前后的对比 在这篇文章中,您会了解到一个简单而又高效的方式来使您的应用在可折叠设备上运行时适配布局。...这是一个简单的媒体播放器案例,它会自动调节尺寸以避免让折叠处出现在画面中间,并且调整播放控制组件的位置,从屏幕完全展开时嵌入画面中,变为当屏幕部分折叠时显示为单独的面板。...这样一来该控件会在屏幕完全展开时被隐藏,而当屏幕部分折叠时又出现在底部。 请注意第 28 行的 layout_constraintGuide_end 属性。它就是当您移动参考线时需要改变的值。...如果您要实现横屏功能,那么大多数时候,边界会以一个在屏幕中垂直居中的矩形来表示,它和屏幕一样宽,并且高度与铰链相同 (对于可折叠设备而言值为 0,对于双屏幕设备而言会是两个屏幕之间的距离)。

    2.4K30

    【约束布局】ConstraintLayout 偏移 ( Bias ) 计算方式详解 ( 缝隙比例 | 计算公式 | 图解 | 测量图 + 公式 )

    , 必须先设置水平方向的约束 , 使用 Left , Right 或者 Start , End 组合成的属性约束 , 如 : //将 被约束组件 的 左侧 约束到 目标组件 的左侧 app:layout_constraintLeft_toLeftOf...2.垂直方向 : 使用 app:layout_constraintVertical_bias 的前提 , 必须先设置垂直方向的约束 , 使用 Top , Bottom 组合成的属性约束 , 如 : /..., 其组件的高度与 Bias 属性无关 , Bias 控制的是组件顶部和底部的缝隙 ; 6.代码示例 : <?...5.对应变量说明 : ① 屏幕宽度 : D_{screenwidth} =5130 ② 屏幕高度 : D_{screenheight} =7890 ③ 组件宽度 : D_{width} =1282...⑧ 组件下方缝隙 : D_{bottom}=4440 6.相关公式 : ① 组件宽度占屏幕 25\% : D_{screenwidth}=4D_{width} ② 组件高度占屏幕 25\%

    2.3K21

    【Android 屏幕适配】屏幕适配通用解决方案 ⑥ ( 约束布局 ConstraintLayout 百分比布局方案 | 将设计稿尺寸自动转为约束布局百分比标签属性 | 将输出结果设置到组件标签中 )

    文章目录 一、将设计稿尺寸自动转为约束布局百分比标签属性 二、将输出结果设置到组件标签中 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 约束布局 bias 计算公式参考...【约束布局】ConstraintLayout 偏移 ( Bias ) 计算方式详解 ( 缝隙比例 | 计算公式 | 图解 | 测量图 + 公式 ) 方案 ; 约束布局 百分比 屏幕适配案例参考 【约束布局...】ConstraintLayout 屏幕适配案例 ( 使用代码生成约束布局控件属性 ) 博客 ; 一、将设计稿尺寸自动转为约束布局百分比标签属性 ---- 美工给出的设计稿尺寸 720 \times..., 一般情况下这两个值就是布局的宽高 , 也就是 宽度 720 和 高度 1280 ; 但是 , 假如有特殊需求 , 比如组件框定在某个组件的范围内 , 则设置不同的值 ; // 计算 垂直 水平方向...// bias 值 // ② bias 高度计算 : 计算出总的 bias 总高度 = height_inner - 控件高度 , 顶部值 / 总高度 = // 垂直方向的 bias 值

    1.6K10

    折叠屏上应用设计规范,了解一下?

    △ 布局的三个主要区域 指南中的 组合部分 带您了解如何充分利用屏幕空间以保障可读性,并且以尊重用户心智模型的方式在不同的场景下合理排布重要内容和操作选项。...△ 栏式网格 您可以通过这些栏将屏幕划分为不同区域,用于容纳相关的信息和操作,进而改善信息层次结构。...△ 使用栏式网格将屏幕划分为三个主要区域 在本例中,三个主要区域通过重排来保持相同的信息层次结构,但以更加人性化的方式在小屏幕上显示。...如平板电脑,部分屏幕区域难以用大拇指触及,用户也很难腾出整只手来自由操控屏幕。用户轻易就能触及屏幕的底部角落,但可能无法触及屏幕最顶端,尤其是在竖屏模式下。...铰链会带来明显的触觉差异,甚至两个屏幕会存在物理分离。因此,请您避免将按钮和其他重要操作项直接放在铰链区域。

    4.5K20

    如何让一套代码完美适配各种屏幕?

    :ConstraintLayout,ConstraintLayout强大之处不仅在于它能够进行百分比布局,还可以进行相对定位、角度定位、尺寸约束、宽高比、Chainl链布局等,在不同设备间都能处理的游刃有余...,指的是产品流程在不同设备上有不同的展示方式,例如手机与Pad的区别,在手机设备上,一般来说具体Item列表是一个页面,点击每个Item会跳转至新的详情页;而在宽度>高度的Pad上,为了防止页面空白浪费...2.1.4、限定符适配在2.1.3中提到了限定符的概念,也解决了一部分的设计适配问题,但是还有一些限定符的概念没有涉及到,该目录下将会提到不同的限定符的概念,可以结合2.1.3一起食用。...分辨率限定符在Android项目中,会把放置图片资源的文件夹分为drawable-hdpi、xhdpi xxhdpi xxxhdpi等,这些指的就是分辨率限定符。...举个例子,如设计稿中固定宽度为360dp,当前设备的屏幕宽度为720,那么density = 720 / 360 = 2,其中当前设备的屏幕宽度也可以用DisplayMetrics来获取:val targetDensity

    1.2K20

    FAQ | 为大屏幕设备构建应用的常见问题解答

    ,整理成这一篇关于为折叠屏和大屏幕设备构建应用的常见问题和解答,如果您在构建过程中有任何其他的问题,欢迎通过留言的方式让我们知道。...如今随着可折叠屏幕使用量的增加,围绕折叠设备进行的开发方式更加多样,将应用延伸至手机之外的机会也就随之增加了。...在竖屏中大堆组件或元素占据设备边缘很合理,但在横屏中,用户大多数时间是双手持握设备,横跨两个边缘的元素就会占用大量空间且非常的显眼,这会给用户一种感觉——界面很笨拙,所以应尽量避免边缘停靠,考虑用其它方式放置组件和元素...答: 从不同屏幕尺寸的角度来说,平板设备需要考虑的是横屏模式下的中等高度 (Medium height) 和展开宽度 (Expanded width),断点分别是 480dp+ 和 840dp+,桌面设备需要考虑展开高度...布局和输入都很重要,尤其是当您开始考虑更大屏幕的设备时,如需创建适合不同屏幕尺寸的 自适应布局,最好的方法是将 ConstraintLayout 用作界面中的基本布局。

    3.5K10

    Infer Constraints,Autoconnect,ConstraintLayout拖拽使用教程

    Order Position (3)、对齐式约束(Alignment) A 的边线或中间线与 B的边线或中间线对齐(遵守上面注意事项中的3) 如下图,分为两种,一种是不带margin的对齐,对应下图中的左半部分...在 ConstraintLayout 中,view 的width 、height 的取值有三种,分别是: 具体数值,如 99dp wrap_content , 包裹内容 match_constraint...view四个角上的白色小方块来调整其大小,这种方式属于硬编码模式,不会导致其他view或者屏幕的重新测量。...在上图中,我们发现,而且properties面板中方形区域的垂直方向的两个小圆圈(把手)被直线连通了,表示:当前高度是0dp,高度的具体尺寸以宽度为基准。...但是在实际使用的时候,可能还需要我们自己手动的根据不同的屏幕朝向或者屏幕尺寸做出适当的调整。

    13810

    强大的ConstraintLayout:使用ConstraintLayout打造响应式UI

    使用RelativeLayout进行求解,解题思路: 通过设置一个水平居中的参照View,用于等分两个区域。 将两个TextView作为一个整体,在布局内垂直居中。...在屏幕高度过长(小于9:16)的情况下,对于多出来的高度部分,优先分配给底部面板,直到底部面板到达最大值,再将剩余高度分配给中间的预览区域; 1.3....在屏幕高度过短(大于9:16)的情况下,优先压缩操作区域,直到底部面板到达最小值,再将压缩中间的预览区域。 这里需要补充一些设计师未提及的部分: 2.1....但这种实现方式,隐隐感觉不够优雅: 实现逻辑依靠两部分实现,布局和计算辅助类,相关逻辑不够内聚,有一定的维护成本(其他人接手时,单看布局文件,会觉得这是很简单的一个布局,尝试修改布局内的高度,却会发现无论怎么修改不生效...不过,这个实现里,中部视频预览区并非实际想要的预览区,实际想要的部分,是包含了两侧留白的部分。 一开始,笔者一直致力于将中间的布局的边界,在保留当前效果的情况下,拓展到约束边界,最终未果。

    3K21

    ConstraintLayout 之 Guideline、Barrier、Chains和Groups

    : implementation 'com.android.support.constraint:constraint-layout:1.1.0-beta1' Guidelines 可以简化视图布局的对齐方式...Guidelines可以指定一个开始的dp值和结束的dp值或者可以相对于屏幕的百分比。要查看不同的准则模式,您可以单击guidelines顶部的圆形图标。 效果图如下: ?...Barrier是一个看不见的视图,其中包含您用来形成“Barrier”的观点。如果其中一个视图增长,则Barrier将其大小调整为所引用项目的最大高度或宽度。...Chains 链允许您控制元素之间的空间以及元素如何使用空间。要创建链,需要选择要组成链的一部分元素,然后右键单击“链”-“创建水平/垂直链”。 ?...这样一来,您可以设置组中控件的可见性仅通过设置组的可见性就行了,而无需设置每个视图的可见性。这对于诸如错误屏幕或加载屏幕的事情是有用的,其中一些元素需要一次更改其可见性。 添加组-如下: ?

    1.5K50

    【Android 屏幕适配】屏幕适配通用解决方案 ⑦ ( PercentRelativeLayout 百分比布局方案 | 该布局已废弃本方案仅做参考 )

    文章目录 一、PercentRelativeLayout 百分比布局方案 二、将输出结果设置到组件标签中 参考文档 : 设备兼容性概览 屏幕兼容性概览 支持不同的像素密度 声明受限屏幕支持 约束布局 bias...计算公式参考 【约束布局】ConstraintLayout 偏移 ( Bias ) 计算方式详解 ( 缝隙比例 | 计算公式 | 图解 | 测量图 + 公式 ) 方案 ; 约束布局 百分比 屏幕适配案例参考...【约束布局】ConstraintLayout 屏幕适配案例 ( 使用代码生成约束布局控件属性 ) 博客 ; 约束布局百分比布局完整方案参考 【Android 屏幕适配】屏幕适配通用解决方案 ⑥ ( 约束布局...---- 使用如下程序 , 输入 PercentRelativeLayout 布局的 宽度 , 高度 // 给出中心点坐标,图片宽高,屏幕宽高,计算出该图片的位置 // 屏幕宽高 float...width = 1334, height = 614; 左上角顶点的坐标 float[][] left_top_data 子组件的宽度和高度 float[][] width_height_data 直接可以输出

    29620

    安卓属性动画小技巧

    view 从未执行属性动画或者人为设置偏移量(如调用 setTranslationX()),偏移量就是 0,而 mLeft 是据其父 view 的左边界的距离。...view 执行过属性动画过后或者被设置了偏移量(如调用 setTranslationX(),此时 view 的位置已经改变到新的位置), 偏移量就是 getTranslationX(),其实就是距离最初...如图布局,需求是点击屏幕时,button 需要下滑到屏幕外 通常我们想到的是将 button 向下移动 button 顶部距离屏幕底部的距离。但是这个距离就得知道 button 父 view 的高度。...() 是相对于自身父View的,这里指的就是 buttonParent ),而下滑的高度就是 buttonParent 的高度。...方法 ObjectAnimator.ofFloat(mButton, View.TRANSLATION_Y, 0,buttonParent.getHeight()); 这里代码好像和上面一样,但是思考时的方式可不一样

    61040

    例说 Constraint Layout:初探

    更加扁平化的布局,更快的速度 约束布局旨在使你的布局更加扁平化,你可以将布局优化至以前难以想象的精简程度:对于无需滚动控件(如:RecyclerView,ListView,GridView,etc.)的界面...屏幕适配和多分辨率设计更简单 Android 的屏幕适配一直是一个耗时耗力的工作,CL 的不少属性,如:bias,可以使我们更简单、更好地布局 UI ,并在不同尺寸、不同分辨率的屏幕上都达到一致地、符合设计意图的效果...它可以展示两个类似于手机屏幕的界面,分别是两种视图预览模式,设计视图和蓝图视图。两者可以辅助着进行布局编辑和预览,非常直观和好用。...可以将蓝图模式想象成“X 光”模式,就像我们的 X 光片高亮显示了人体密度最高的部分——骨骼——一样,蓝图模式是 XML 中最重要的内容——属性——的视觉表现形式,省略了无关的细节,突出体现了布局的特征...当然无论是上述那种方式,开发者还是需要对自动推断结果进行适当的调整才能获得满意的效果,尤其要考虑对不同屏幕尺寸及方向的适配。

    2.1K10

    端开发技术——解密Flutter响应式布局

    Android的方法 为了处理不同的屏幕尺寸和像素密度,在Android中使用了以下概念: 1.1 ConstraintLayout Android UI设计中引入的一个革命性的东西是ConstraintLayout...但这并不能解决大型设备的问题,在大型设备中,拉伸或只是调整UI组件的大小并不是利用屏幕面积的最优雅的方式。在屏幕面积很小的智能手表,调整组件以适应屏幕大小可能会导致奇怪的UI。...3.1 Flutter的响应式概念 正如我前面所说的,我将讨论开发响应式布局所需的重要概念,然后你来选择使用什么样的方式在你的APP上实现响应式布局。...app主要由两个部分组成: HomePage (PeopleView, BookmarkView, ContactView) ChatPage (PeopleView, ChatView) 对于大屏幕...您还可以定义扩展小部件的flex属性,这将允许您指定每个小部件应该覆盖屏幕的多少部分(默认flex设置为1)。

    2.3K00

    实践 | Google IO 应用是如何适配大尺寸屏幕 UI 的?

    因此,让应用能充分利用额外的屏幕空间显得尤其重要。本文将展示我们为了让 Google I/O 应用在大尺寸屏幕上更好地显示而用到的一些技巧。...单窗格还是双窗格 在日程功能中,我们用列表-详情的模式来展示信息的层次。在宽屏幕设备上,显示区域被划分为左侧的会议列表和右侧的所选会议详细信息。...这种布局方式带来的一个特别的挑战是,同一台设备在不同的配置下可能有不同的最佳显示方式,比如平板电脑竖屏对比横屏显示就有差异。...双窗格会一直存在,但根据屏幕的尺寸,第二窗格可能不会显示在可视范围当中。只有在给定的窗格宽度下仍然有足够的空间时,SlidingPaneLayout 才会同时将两者显示出来。...由于这些列表项本身不太可能有新的布局方式,我们可以通过 ConstraintLayout 限制列表宽度来解决。

    2.1K20

    ConstraintLayout概要

    简介 约束布局ConstraintLayout 是一个ViewGroup,可以在Api9以上的Android系统使用它,它的出现主要是为了解决布局嵌套过多的问题,以灵活的方式定位和调整小部件。...还有一点就是ConstraintLayout可以按照比例约束控件位置和尺寸,能够更好地适配屏幕大小不同的机型。...尺寸约束 控件的尺寸可以通过四种不同方式指定: 使用指定的尺寸 使用wrap_content,让控件自己计算大小 当控件的高度或宽度为wrap_content时,可以使用下列属性来控制最大、最小的高度或宽度...: android:minWidth 最小的宽度 android:minHeight 最小的高度 android:maxWidth 最大的宽度 android:maxHeight 最大的高度 注意...,新建一个TextView约束在屏幕的右上角,在Placeholder中设置 app:content=”@+id/textview”,这时TextView会跑到屏幕的左上角。

    91132

    黑科技:使用AI和机器学习将Android项目秒变IOS项目

    最近看Github,发现了一个刚出炉的黑科技:利用人工智能(AI)和机器学习(ML)技术将现有Android源代码转换成iOS代码。...目前支持Android项目中的资产目录文件和UI布局转换,以及部分外部库的转换。有了这个神器,以后一个人就可以轻松搞定两个平台了,真是爽歪歪啊。。。。我根本不需要学习iOS了。。。...已支持的功能: Android的资产目录 (如:jpg,png,.9图等) => "Assets.xcassets" mipmap目录的图片资源 => “.appiconset” Color形式的...部分效果图如下: CardView的屏幕截图: ? image 开关,ImageButton,ToggleButton的屏幕截图: ? image Button的屏幕截图: ?...image ConstraintLayout的屏幕截图(这个也做了移植,确实经惊艳到我了): ? image ? image TableLayout的屏幕截图: ? image ?

    1.5K00

    【Android从零单排系列三十四】《Android布局介绍——ConstraintLayout》

    这意味着你可以根据需要自由调整视图的位置,并确保在不同屏幕尺寸或设备方向下的正确布局。 性能优化:ConstraintLayout针对性能进行了优化,可以减少布局层次以及视图的嵌套。...而ConstraintLayout允许将多个视图放置在单个容器内,减少了嵌套和层次深度,提高了布局效率和可读性。...你可以通过拖拽和调整视图的边界、连接线和约束条件来轻松创建和修改布局。 ConstraintLayout的工作原理是通过设置视图之间的宽度、高度和相对位置的约束条件来实现。...layout_height:设置视图的高度。可以使用match_parent(填充父容器)或具体数值。...你可以根据需要修改和扩展这个简单的案例,以满足实际的界面需求。 五 总结 ConstraintLayout的工作原理是通过设置视图之间的宽度、高度和相对位置的约束条件来实现。

    44720
    领券