我正在使用一个 TextView 扩展类,它像打字机一样写一个字符串,每个字符一个字符。它工作正常,但是当写一个不适合当前行的单词时,它会产生烦人的行为并从当前行中删除不适合的工作并将其写入下一行。
欢迎大家。我需要知道如何告诉 TextView 使用断字,它必须像这样强制断字:
superlargewo-
rd
verylarg-
eword
Run Code Online (Sandbox Code Playgroud)
这意味着放置字符 - 而不是将单词传递到下一行
怎么能强制进入TextView?
我试图在 TextView 中添加连字符来破坏长单词。例如,我有一个文本视图,其文本是“推荐”。因为该单词对于一行来说太长,所以我想在第一行中添加“Recommend-”,在第二行中添加“ation”,如下所示:

但事实上,我得到了

这是我对 TextView 的内容:
<TextView
android:id="@+id/textViewid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/long_text"
android:breakStrategy="high_quality"
android:hyphenationFrequency="full" />
Run Code Online (Sandbox Code Playgroud)
我尝试了breakStrategy值和hyphenationFrequency值的不同组合,但没有成功。知道为什么它会以这种方式或其他方式使连字起作用吗?提前致谢!
如何使用 Jetpack Compose 在 Android 中正确换行?我从网络上了解了该功能,我在网络上用于­此类情况。
我定义了带有可能换行符的字符串值,如下所示:Korrespondenz\u00ADsprache。不幸的是,这不适用于 Android。
我使用下面的代码
Text(
text = "Korrespondenz\u00ADsprache",
style = MaterialTheme.typography.h4
)
Run Code Online (Sandbox Code Playgroud)
目前结果如下所示:
预期结果应如下所示:
android hyphenation android-jetpack-compose android-compose-textfield
我想全局阻止LaTeX用'Objective-C'连字.我知道\ hyphenation命令,但我不知道如何使用它.如果我将'Objective-C'传递给此命令,破折号将被视为提示在那里连字.
我发现的一个解决方案是每次使用时将Objective-C包装到mbox中.但是,我正在编写的文档包含了很多这个名称,并且每次将它包装到mbox中都很难看(就像在源代码中定义一个命令并一遍又一遍地使用它一样).
我对任何建议都很满意!
最好,JP
我试图使用CSS连字符.它们在IE 11和Safari中工作,但在Firefox中无法正常工作,我不确定为什么.这是一个例子:
.container{
width: 16.6667%;
background:#ccc;
}
h3{
font-size: 0.95rem;
font-weight: 600;
-moz-hyphens: auto;
-webkit-hyphens: auto;
-ms-hyphens: auto;
hyphens: auto;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<h3>DIAGNOSEVERFAHREN</h3>
</div>Run Code Online (Sandbox Code Playgroud)
当您在Firefox中运行代码段时,该字DIAGNOSEVERFAHREN溢出容器并且不会中断.在Safari和IE中,它像我期望的那样打破.为什么这不适用于Firefox?
编辑
正如萨芬Tanalin的注意回答一个必须包括lang属性为连字符才能正常工作.我有这个作为我的<html>标签:
<html class="no-js" lang="de">
Run Code Online (Sandbox Code Playgroud) 我有一个字体大小很大的 TextView,如果我有一个长单词,则只有最后一个字符会放入下一行。例如 :
祖萨梅纳尔贝
t
现在我想将文本格式化为如下所示:
祖萨梅纳布 -
t
有可能实现这一目标吗?
在API 23的TextView叫法文本正确:
longwooord\u00AD1231232131被正确地从分裂\u00AD导致炭longwooord-和1231232131下一行。然而,API 21\u00AD只是被忽略,单词在到达文本区域的右边界时被拆分。有没有办法在 API 21 中复制 API 23 断字行为?
今天是个好日子。我在使用带有文本视图的 TextKit 显示带连字符的对齐文本时遇到问题。我试图通过段落样式和 NSLayoutManager 进行断字,但没有预期的结果。段落样式示例:
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .justified
paragraph.lineBreakMode = .byWordWrapping
paragraph.hyphenationFactor = 0.85 //here goes the black magic :)
Run Code Online (Sandbox Code Playgroud)
问题是没有连字符的对齐文本看起来很糟糕,因为它拉伸了字母(而不是单词)之间的空间。如果连字符有效,一切看起来都很好。但这里有另一个问题 - 断字被应用于具有当前手机首选语言规则的文本。这意味着,如果手机的首选语言是英语并且文本是西里尔文(例如俄语或乌克兰语),则根本不应用连字符,并且会出现文本拉伸问题。下面是这个问题的样子:
将手机首选语言更改为文本语言会导致本机连字正常工作,并且对齐的文本也可以正确呈现:
所以我的解决方案是使用 NaturalLanguage 框架确定文本语言并将应用程序首选语言更改为该语言。为了确定文本语言,我使用了这个片段:
import NaturalLanguage
extension String {
func dominantLanguage() -> Locale? {
let languageRecognizer = NLLanguageRecognizer()
languageRecognizer.processString(self)
if let code = languageRecognizer.dominantLanguage?.rawValue {
let language = Locale.init(identifier: code)
return language
} else if let code = languageRecognizer.languageHypotheses(withMaximum: 3).sorted(by: { (arg0, arg1) -> Bool in
return arg0.value > arg1.value
}).first?.key.rawValue …Run Code Online (Sandbox Code Playgroud) 这段代码有什么问题,连字号不起作用lang="en"?
h1 {
font-size: 2em;
hyphens: auto;
}
div {
max-width:200px;
background: aqua;
}Run Code Online (Sandbox Code Playgroud)
<div>
<h1 lang="en">Kindofverylongheadlineevenbiggerthanimagined</h1>
<h1 lang="en">Internationalization</h1>
<h1 lang="de">Kindofverylongheadlineevenbiggerthanimagined</h1>
</div>Run Code Online (Sandbox Code Playgroud)
我正在构建一个自定义的AngularJS指令来创建一个谷歌地图,我已经在我的标签中的自定义属性中存储了一些谷歌地图选项:
<googlemap zoom-control="true" …></googlemap>
Run Code Online (Sandbox Code Playgroud)
Angular的指令编译方法有参数(tElement, tAttrs, transclude); 当我登录tAttrs到控制台时,该对象具有名称已将连字符转换为camelCase的属性:

谁在做Angular或浏览器(在Firefox和Chrome中检查过)?我可以依靠这种行为吗?
PS当我检查DOM时,html元素的属性仍然有连字符.