我一直在阅读了对文档的跨区/ Spannable为我工作的一个项目类。 我已经被包含在跨越的定义和使用不解MARK
和POINT
。
甲MARK
似乎在文档中被定义而作为一个“附加”到字符位置POINT
被定义为被“粘合”到字符。 因此,一个MARK
当文本更改不会移动和POINT
将它“粘”在文本更改为角色移动。
这些定义似乎表明, MARK
是同义的INCLUSIVE
和POINT
是代名词EXCLUSIVE
。
然而,这并非如此,因为既不SPAN_MARK_MARK
也不SPAN_POINT_POINT
与任一同义SPAN_INCLUSIVE_INCLUSIVE
或SPAN_EXCLUSIVE_EXCLUSIVE
。 事实上, SPAN_INCLUSIVE_INCLUSIVE
相同SPAN_MARK_POINT
和SPAN_POINT_MARK
是一样的SPAN_EXCLUSIVE_EXCLUSIVE
。
我的问题如下
为什么SPAN_POINT_MARK
代名词SPAN_EXCLUSIVE_EXCLUSIVE
? 为什么是SPAN_MARK_POINT
代名词SPAN_INCLUSIVE_INCLUSIVE
?
为什么不SPAN_MARK_MARK
和SPAN_POINT_POINT
代名词SPAN_INCLUSIVE_INCLUSIVE
和SPAN_EXCLUSIVE_EXCLUSIVE
分别?
什么是真正的定义, MARK
和POINT
在这种用法?
我想解释MARK VS点的方式是,其表示为方括号中的任何偏移,他们在一系列文本的存在。 的方向上的托架指向显示,所述标记或点“附接”到字符。
因此,对于一个点,你可以使用开括号 - 它连接到它后面的字符。 而对于一个标记,你可以使用右括号 - 它连接到它前面的字符。
让我们来看看每种类型的一些例子:
SPAN_MARK_MARK
在插入一个长度为0的跨度的偏移量:这些标记保持固定。
前:的Lorem]存有悲坐。 后:的Lorem] INSERT存有悲坐。
在非0长度的跨度的开始插入:插入的文本被包括在跨度的范围内。
前:的Lorem]存有]悲坐。 后:的Lorem] 插入存有]悲坐。
在非0长度的跨度的端部插入:插入的文本被排除在跨度的范围内。
前:的Lorem]存有]悲坐。 后:的Lorem]存有] INSERT悲坐。
您可以从最后两个例子,为什么看SPAN_MARK_MARK
标志和代名词SPAN_INCLUSIVE_EXCLUSIVE
标志。 在跨度的开始插入的文本被包括在范围内,而在端部插入的文本被排除。
SPAN_POINT_POINT
在一个长度为0的跨度的偏移插入:该点被向前推。
前:的Lorem [存有悲坐。 后:INSERT的Lorem [存有悲坐。
在非0长度的跨度的开始插入:插入的文本被排除在跨度的范围内。
前:的Lorem [存有[悲坐。 后:INSERT的Lorem [存有[悲坐。
在非0长度的跨度的端部插入:插入的文本被包括在跨度的范围内。
前:的Lorem [存有[悲坐。 后:的Lorem [存有INSERT [悲坐。
同样,你可以从最后两个例子,为什么看到SPAN_POINT_POINT
标志和代名词SPAN_EXCLUSIVE_INCLUSIVE
标志。 在跨度的开始插入的文本被排除在范围内,而在端部插入的文本被包括。
SPAN_MARK_POINT
在跨度的开始插入:插入的文本包含在范围内。
前:的Lorem]存有[悲坐。 后:的Lorem] INSERT存有[悲坐。
在跨距的端插入:插入的文本仍包括在范围内。
前:的Lorem]存有[悲坐。 后:的Lorem]存有INSERT [悲坐。
因此它具有同义词SPAN_INCLUSIVE_INCLUSIVE
-插入的文本总是包含在跨度的范围。
SPAN_POINT_MARK
在跨度的开始插入:插入的文本被排除的范围内。
前:的Lorem [存有]悲坐。 后:INSERT的Lorem [存有]悲坐。
在跨距的端插入:插入的文本仍然排除在范围内。
前:的Lorem [存有]悲坐。 后:的Lorem [存有] INSERT悲坐。
因此它具有同义词SPAN_EXCLUSIVE_EXCLUSIVE
-插入的文本总是从跨度的范围之外。
我认为文档通过拆分的一些同义词的定义混淆的东西。 例如,描述当SPAN_MARK_MARK
,他们只在一个长度为0的跨度来定义它的使用情况。 然后定义当SPAN_INCLUSIVE_EXCLUSIVE
(这是同义词)它们仅定义其在非0长度的跨度而言用法。 我认为这将是一个更加清晰,如果他们说了前面,他们是同义词,不得不通过这两个术语共享一个统一的定义。
他们是概念上的概念,并认为他们在显示顺序
从文档:
MARK和POINT概念性位于两个相邻字符之间。 标记为“连接到”字符之前,而点将在以后坚持的字符。 插入光标在概念上位于标记和点之间。 其结果是, 插入标记和点之间的新角色将离开MARK不变,而点将转移,现在位于插入字符后,仍然粘后,相同的字符。 根据插入是否发生在开始或跨度结束时,跨度因此将被扩展以包括新的字符(当跨度是使用在其开始标记或者在其端部的点)或它将被排除。 需要注意的是之前和之后,这里指的是字符串偏移量,这是独立于文本的可视化表示
你的观点
这些定义似乎表明,标记与包容性的同义词,这一点是代名词EXCLUSIVE。
心不是真的如此。 基本上认为马克的作为跨度点为终点的起始标志。 什么这两个点之间发生的(造型,增加更多的文本样式文本等)被归为包容性和排他性,因此与他们直接相关。
让我们来看一个例子好吗:假设我们有以下的文字风格
这是一个示例文本
如果我们用SPAN_EXCLUSIVE_EXCLUSIVE上的黑体字跨度,和我们插入在跨中的文本,它仍然是黑体字:
这是一个令人难以置信的好例子文本
但是,如果我们插入的开头或粗体跨度结束文本, 插入文本不是粗体字:
这不是一个示例文本
如果我们使用SPAN_INCLUSIVE_EXCLUSIVE,一开始,然后插入文本将被纳入跨度的一部分,我们将有:
这是一个相当示例文本不是它
现在,这一切都只是我的文档的解释。 为什么SPAN_POINT_MARK是SPAN_EXCLUSIVE_EXCLUSIVE代名词是从谷歌的东西有人会评论我想,但在我看来,MARK_POINT运动代表包容和POINT_MARK表示排斥。 SPAN_POINT_POINT和SPAN_MARK_MARK表示0长度的字符串,因此不能归因于包含/排除。
:编辑:SPAN_MARK_MARK和SPAN_POINT_POINT是0长度的字符串,即字符串在0位置与标记启动,然后任何后续添加附加到字符串,但在标记位置不改变,或该字符串与点位置和任何后续添加到开始串移向结束点。 这些标志信号基本上起点A spannable串并因此表示0长度的字符串。 那么包容,专属标志可以根据字符串是否mark_mark或point_point开始与使用。 此外SPAN_EXCLUSIVE_INCLUSIVE,当长度为0,表现得像标记和SPAN_INCLUSIVE_EXCLUSIVE 0时长表现得像点,这是从他们defined.Again方式明显这是我的文档的解释