- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个包含 3 个水平位置 View 的复合 View 。当我将此复合 View 的宽度设置为 WRAP_CONTENT 时,我希望所有这 3 个 View 并排放置,因为它是 WRAP_CONTENT。但是当我将宽度设置为 MATCH_PARENT 时,我希望第二个 View 占据整个屏幕空间(但第二个 View 仍然位于第一个 View 旁边)。
例子:
WRAP_CONTENT:
|view1 view2 view3 --empty-space--|
MATCH_PARENT:
|view1 view2 --empty-space-- view3|
由于某些原因,我不得不在这里使用约束布局。
我试过下面的代码。当我尝试将第二个 View 的宽度更改为 WRAP_CONTENT,并将整个约束布局设置为 MATCH_PARENT 时,第二个 View 位于中心(而我想要的是保持左侧的位置)
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="view1"/>
<TextView
android:id="@+id/view2"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/test1"
app:layout_constraintEnd_toStartOf="@id/test3"
android:text="view2"/>
<TextView
android:id="@+id/view3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="view3"/>
</androidx.constraintlayout.widget.ConstraintLayout>
谢谢。我感谢任何解决方案。
最佳答案
我不是 100% 确定我理解你想要完成的事情,但我会针对我能想象到的每种情况扩展(已经给出答案):
| V1 | V2 | V3 ...... |
你只需要用 android:layout_width="0dp"
告诉第三个 View match_constraints
它就会占据所有的其他 View (有换行)留下的空间。
这将产生与我从此处理解的相同的输出:
|view1 view2 view3 --empty-space--|
除非 -- 空格 --
你的意思是 |V1|V2|V3| ..... |
在这种情况下,您需要约束布局 Chain
和 bias
:
在最左边的 View 中,添加:
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintHorizontal_chainStyle="packed"
并确保所有 View 之间都有连接,例如 view1(最左边)将具有:startToStart=parent,endToStart=view2。然后 View2 将具有 startToEnd=view1、endToStart=view3 和 view3...startToEnd=view2、endToEnd=parent
你明白了。
这会将所有 View 打包到 start
,最后留下空白空间。无论父级的约束(匹配/包装)如何,上述方法都有效,因为引擎无论如何都会根据可用空间定位/调整 View 大小。
现在,对于您的 MATCH_PARENT 示例:
|view1 view2 --empty-space-- view3|
(对我而言)您不清楚 --empty space-- 是什么意思,这是否意味着您希望 view2
包装其内容?还是希望 view2 使用所有可用空间并将 view3 推到最后?
我假设您的意思是所有 View 都在环绕并且有空白区域。如果您不知道确切的尺寸,那么有一个关于如何实现该目标的很好的答案(提示,您需要在中间的空格中链接),因为引擎无法确定每个 View 将占用多少空间在计算尺寸并包装它们之前。
现在,如果您不介意 view2 占用所有剩余空间并打断链条(仅在需要时),您可以执行正常的偏向链条,但使用默认展开条件进行包装:
所以它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/view2"
app:layout_constraintTop_toTopOf="parent"
android:text="view1"/>
<TextView
android:id="@+id/view2"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@id/view1"
app:layout_constraintEnd_toStartOf="@id/view3"
app:layout_constraintWidth_default="spread"
android:text="view2"/>
<TextView
android:id="@+id/view3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toEndOf="@id/view2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
android:text="view3"/>
</androidx.constraintlayout.widget.ConstraintLayout>
这会产生如下内容:
| V1 | V2.............|V3|
哪个可能适合你,也可能不适合你。
关于android - 如何在 Android Constraint Layout 中支持 wrap_content 和 match_parent 条件以及水平位置的 3 个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56602162/
我不确定是否理解好几个 Android /res/layout 文件夹所起的作用。 layout:一般布局 layout-port:必须更改为纵向的小部件布局 layout-land:小部件的布局,必
我在 Qt 4.7 中有一个界面,但我很难按照自己的意愿行事。 所需行为的基本描述:用户在组合框中进行选择,这会导致查询转到另一个函数,该函数返回一个 QHBoxLayout 对象,该对象通常包括多个
我在 res 文件夹中创建了 layout-large、layout-normal 和 layout-xlarge 并且我将所有 xml 文件复制到那些布局文件夹中 首先,我想问一下 layout(d
如图所示。我想在布局上方显示星图。我是这种编码的新手。 我的查询是1)是否可以在我的布局端显示星标(图像)? 2) 如果每次点击我的 Activity 时我都想显示星标并显示第二张图片,这可能吗?意味
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 上个月关闭。 Improve this questio
我正在使用 android studio 中的 Material 设计为 pre lollipop 设备创建一个 android 应用程序,我是 android studio 的新手我正在我的项目中创
我对 Android 布局设计感到困惑。我想实现下图中的布局: 但是下面的代码产生了类似这张图片的东西: 我的代码
如果我有: Some Element.... Other Element
我有一个单元格(称为A),它在更高层次的单元格(称为P)中使用一次。当我将 A 放在 P 中时,它的边框比 A 的实际内容大得多。当我下降到 A 并进行缩放时,它被缩小了,表明边缘存在一些东西。 我可
我有一个“auth-redirect”模块,位于所有页面布局文件(1column、2column 等)的开头。这可以确保在渲染任何页面之前,如果用户未经过正确身份验证,则会重定向到登录页面。 我允许呈
我的app只支持landscape模式(这是业务需求)。 我在 layout-land 文件夹中有一个布局 xml 文件,但我没有费心创建一个 layout 文件夹,因为我在 Android list
我正在尝试为我的 Android 应用程序创建启动屏幕,如链接 http://developer.xamarin.com/guides/android/user_interface/creating_
我目前正在开发一个应用程序,我正在使用 swdp为了创建对多个屏幕的支持。 我添加了 sw400dp文件夹,根据 Android Studio 的 XML 渲染器,它基本上包含所有较小的手机。 这意味
Android 在“layout-normal”和“layout”文件夹中处理布局的方式有什么不同吗?如果我有一个被认为布局很小的设备,如果只有这两个选项,它会查看哪个文件夹? 最佳答案 是的,在您给
我已经看到了在单个页面上创建多个强制布局的解决方案,其中每个布局都包含在其自己的SVG中。但是,我一直无法找到有关如何在单个SVG中包括多个力布局的帮助。每个布局都有自己的数据与之关联。 可以在htt
我听说 Constraint-Layout 中的指南和 RTL 存在一些错误。但是这些方法都没有帮助我。我的BottomNavigation 的两边都有指南,一切都在LTR 中工作,但在RTL 中,其
我有以下渲染函数: render() { return ( Header
我知道如何使用以下文件夹,但例如我不知道 layout-small 和 layout-sw320dp 有什么区别? 此外,建议我哪些文件夹对优化很重要。我不喜欢我的程序被用户视为不规则。我希望得到您的
layout-latest.js ui-layout-west 面板 west: { paneSelector: ".ui-layout-west"
我是 Android 开发的新手,对我来说,了解图形布局和 xml 如何相互关联的一个好方法是尝试 xml 属性并查看图形 UI 中的变化。有没有一种方法可以同时并排查看,而不必从一个切换到另一个?图
我是一名优秀的程序员,十分优秀!