android:id="@+id/contact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:clickable="false"
android:ellipsize="end"
android:focusable="false"
android:focusableInTouchMode="false"
android:maxLines="1"
android:text='收货人:李想'
android:textColor="@color/black1"
android:textSize="14dp"
app:layout_constraintBottom_toTopOf="@id/address"
app:layout_constraintStart_toEndOf="@id/tv_first"
app:layout_constraintEnd_toStartOf="@id/phone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread_inside"/>
在联系人长度比较短的情况下,可以正常显示,但是当联系人内容太长的情况,整行的内容会超出两端,连左右的margin都不生效了,如下图所示
只需添加app:layout_constrainedWidth="true"即可,如下代码所示
<TextView
android:id="@+id/contact"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:clickable="false"
android:ellipsize="end"
android:focusable="false"
android:focusableInTouchMode="false"
android:maxLines="1"
android:text='收货人:理想很丰满现实很骨感理想很美好现实很残酷'
android:textColor="@color/black1"
android:textSize="14dp"
app:layout_constraintBottom_toTopOf="@id/address"
app:layout_constraintStart_toEndOf="@id/tv_first"
app:layout_constraintEnd_toStartOf="@id/phone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constrainedWidth="true"/>
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:clickable="false"
android:ellipsize="end"
android:focusable="false"
android:focusableInTouchMode="false"
android:maxLines="1"
android:text="16600000000"
android:textColor="@color/black1"
android:textSize="14dp"
app:layout_constraintTop_toTopOf="@id/contact"
app:layout_constraintBottom_toBottomOf="@id/contact"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/contact"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constrainedWidth="true"/>
由于设置了android:ellipsize="end",所以超出的部分会显示省略号...
layout
_
const
ra
int
Horizontal_chainStyle 和
layout
_
const
ra
int
Vertical_chainStyle 三个属性值用法相同,
以横向为例用法如下:
<Button
android
:id="@+id/text1"
android
:
layout
_
width
="w
ra
p_content"
在
Android
View 系统中,是
Const
ra
int
Layout
的一个属性,它允许子视图在指定的宽度约束下自由调整宽度(即如果约束允许更小的宽度,视图可以变小)。在 Jetpack Compose 中,你可以通过和来实现类似的效果。
主要介绍app:
layout
_
const
ra
int
Width
_max、app:
layout
_
const
rained
Width
、app:
layout
_
const
ra
int
Dimension
Ra
tio和Guideline的
使用
一、app:
layout
_
const
ra
int
Width
_max、app:
layout
_
const
rained
Width
、app:
layout
_
const
ra
int
Dimens...
由于文章篇幅原因,我只把面试题列了出来,详细的答案,我整理成了一份PDF文档,这份文档还包括了还有高级架构技术进阶脑图、
Android
开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。《
Android
学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!份文档还包括了还有高级架构技术进阶脑图、
Android
开发面试专题资料,高级进阶架构资料 ,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习。
Const
ra
int
Layout
继承自ViewGroup,允许用户以更加灵活的方式在布局中设置控件的位置和尺寸(
Const
ra
int
Layout
在API>9可用)。
Const
ra
int
Layout
采用方向约束的方式对控件进行定位,至少要保证水平和垂直方向都至少有一个约束才能确定控件的位置。相对位置边距中心位置圆形位置可见性尺寸约束链式布局虚拟辅助控件优化器记住,依赖关系中不能有循环依赖关系。
Visibility behavior (可见性的表现)
Const
ra
int
Layout
对可见性被标记View.GONE的控件(后称“GONE控件”)有特殊的处理。一般情况下,GONG控件是不可见的,且不再是布局的一部分,但是在布局计算上,
Const
ra
int
Layout
与传统布局有一个很重要的区别:
传统布局下,GONE控件的尺寸会被认为是0(当做点来处理)
在
Const
ra
int
Layout
中,GONE控件尺寸仍然按其可见时的大小计算,但是其外边距大小按0计算
这种特殊的行为让我们在无
app:
layout
_
const
rained
Width
=”true|false” //默认false
app:
layout
_
const
rained
Height=”true|false” //默认false
例:控件B在控件A右边和父右边之间居中显示
当B内容过多,则超出A右边限制
设置app:
layout
_
const
rained
Width
="true",则可以在之间显示
补充:另外可以通过该属性可以轻松满足此需求(控件A、B横向顺序链表排列,B始终单行显示全部,A包裹内.
在
Android
开发中,经常需要与布局打交道,最近在开发中遇到一个问题,水平方向有多个控件,从左到右依次为ImageView(图标)、TextView(歌曲名)、ImageView(VIP标签)、TextView(作者)、ImageView(播放状态)。并且歌名和歌手字段单行显示,大概的实现效果如下:
如果用Linear
Layout
或者Relative
Layout
来布局,那么效果可能是这样:
出现VIP标签和动画图标被挤出屏幕外面的问题。如果还是坚持要Linear
Layout
或者RelativeLay
参考资料[约束布局
Const
ra
int
Layout
看这一篇就够了](https://www.jianshu.com/p/17ec9bd6ca8a)
约束布局
Const
ra
in
Layout
约束布局的出现主要是为了解决试图层级嵌套过多的情况,它可以在api9以上的版本
使用
。从2.3开始,官方的模板默认
使用
Const
ra
in
Layout
。
1.引入依赖
使用
约束布局需要引入以下依赖:
imp...
app:
layout
_
const
rained
Width
="true"
作用:使得该view的宽受限于他的约束
app:
layout
_
const
rained
Height="true"同理
一个w
ra
pcontent的view 的宽度随着内容变多最终是等于parent的宽度的 但实际上它的宽度不应改如此
eg1: 水平方向上 v1 leftToLeft = parent ,rightToLeft = v2
而v2 rightToRight = p