-->

是什么SPAN_POINT_MARK和SPAN_MARK_POINT之间的区别?(What is t

2019-09-03 00:34发布

我一直在阅读了对文档的跨区/ Spannable为我工作的一个项目类。 我已经被包含在跨越的定义和使用不解MARKPOINT

MARK似乎在文档中被定义而作为一个“附加”到字符位置POINT被定义为被“粘合”到字符。 因此,一个MARK当文本更改不会移动和POINT将它“粘”在文本更改为角色移动。

这些定义似乎表明, MARK是同义的INCLUSIVEPOINT是代名词EXCLUSIVE

然而,这并非如此,因为既不SPAN_MARK_MARK也不SPAN_POINT_POINT与任一同义SPAN_INCLUSIVE_INCLUSIVESPAN_EXCLUSIVE_EXCLUSIVE 。 事实上, SPAN_INCLUSIVE_INCLUSIVE相同SPAN_MARK_POINTSPAN_POINT_MARK是一样的SPAN_EXCLUSIVE_EXCLUSIVE

我的问题如下

  1. 为什么SPAN_POINT_MARK代名词SPAN_EXCLUSIVE_EXCLUSIVE ? 为什么是SPAN_MARK_POINT代名词SPAN_INCLUSIVE_INCLUSIVE

  2. 为什么不SPAN_MARK_MARKSPAN_POINT_POINT代名词SPAN_INCLUSIVE_INCLUSIVESPAN_EXCLUSIVE_EXCLUSIVE分别?

  3. 什么是真正的定义, MARKPOINT在这种用法?

Answer 1:

我想解释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长度的跨度而言用法。 我认为这将是一个更加清晰,如果他们说了前面,他们是同义词,不得不通过这两个术语共享一个统一的定义。



Answer 2:

他们是概念上的概念,并认为他们在显示顺序

从文档:

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方式明显这是我的文档的解释



文章来源: What is the difference between SPAN_POINT_MARK and SPAN_MARK_POINT?