android:大写不起作用

时间:2011-09-27 17:16:20

标签: java android xml

我有一个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:capitalizeandroid:capitalize被打破了吗?

感谢您的回复。

7 个答案:

答案 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中被隐藏:

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才能工作。

我不知道这是否是您的代码的原因,您定位的是什么版本

相关问题