我有一个TextView。我试图将每个单词中的第一个字母大写。
这是TextView:
<TextView
android:text="TextView"
android:id="@+id/textView1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:textSize="30dip"
android:textStyle="bold"
android:layout_marginRight="5dip"
android:ellipsize="end"
android:capitalize="words">
</TextView>
以下是我添加文字的方式:
TextView titleView = (TextView) findViewById(R.id.textView1);
titleView.setText( section.replace("_", " ") );
我是否可以动态添加文字并期望它能将词语大写?另一个特质是否会干扰android:capitalize
? android:capitalize
被打破了吗?
感谢您的回复。
答案 0 :(得分:14)
如果您的目标是API级别14及以上,则应使用
机器人:textAllCaps = “真”
否则,您必须自己实施此行为。
答案 1 :(得分:13)
capitalize
基本上只是您可以在XML中设置的KeyListener
,因此它仅适用于用户输入的文本。 As the documentation states(强调我的):
如果设置,则指定此TextView具有文本输入方法,并应自动大写用户键入的内容。
how to capitalize the first letter of every word in Java上有一个相关的问题,有一些有用的答案。
答案 2 :(得分:1)
这是一个迟到的答案,但我认为可能对某人有帮助......
如果您熟悉java代码中的动态文本,那么您可以使用:
textView.setText(text.toUpperCase());
答案 3 :(得分:0)
@ Shine的回答是正确的我不知道为什么会被投票。在API 3中不推荐使用android:capitalize。遗憾的是,TextView文档未能指出这一点,证据在R.attr中被隐藏:
Android Studio也未通知您此属性已弃用。再过30分钟,我永远不会回来,谢谢google!
答案 4 :(得分:0)
android:capitalize
现已弃用。
您应该考虑使用android:capitalize="words"
。
android:inputType="textCapWords"
根据您的需要,您还可以使用多个值,例如android:inputType="textCapWords|textPersonName"
。
答案 5 :(得分:0)
科特林给与
private val replacementTransformationMethod: ReplacementTransformationMethod =
object : ReplacementTransformationMethod() {
override fun getOriginal(): CharArray {
return charArrayOf(
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z'
)
}
override fun getReplacement(): CharArray {
return charArrayOf(
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z'
)
}
}
然后在块override fun onActivityCreated(savedInstanceState: Bundle?)
设置
this.textUserCode.transformationMethod = replacementTransformationMethod
答案 6 :(得分:-1)
android:capitalize在ICS上已被弃用,所以我想在代码中做到这一点应该更好(即使用 String.toUpperCase())
另一种尝试可能是
android:inputType="textCapWords"
但我想这需要一个EditText才能工作。
我不知道这是否是您的代码的原因,您定位的是什么版本?