2011-09-27 48 views
7

我有一個TextView。我試圖把每一個字的第一個字母大寫。android:大寫不工作

這裏是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壞了?

感謝您的回覆。

回答

13

capitalize基本上只是一個KeyListener,你可以在XML中設置,所以它只適用於用戶輸入的文本。 As the documentation states(重點煤礦):

如果設置,指定該TextView中有一個文本輸入方法,並應自動大寫什麼類型的用戶

how to capitalize the first letter of every word in Java有一個相關的問題,它有一些有用的答案。

+0

哇,幾乎完全相同的答案... –

+0

謝謝,我標記你爲正確的答案。 – emachine

1

這是一個遲到的答案,但我認爲可能幫助別人......

如果你是舒服capitilizing在Java代碼中動態文本,那麼你可以使用:

textView.setText(text.toUpperCase()); 
-1

機器人:利用已過時的ICS,所以我想它應該會更好(與String.toUpperCase() IE)做它的代碼

另一次嘗試,可能是

android:inputType="textCapWords" 

但我想這將需要一個EditText工作。

我不知道這是否是您的代碼的原因,您定位的版本是

13

如果你的目標API級別14及以上時,應使用

機器人:textAllCaps = 「真」

否則,你就必須自己實現這一行爲。

+0

謝謝。現在我知道爲什麼我無法在API Level 8上使用它。:) –

0

@ Shine的答案是正確的我不知道爲什麼它被投下來。機器人:利用在API 3.被廢棄不幸的是TextView的文檔不能說明這一點,證明埋在R.attr:

R.attr

Android的工作室也不能告訴你,這個屬性是不鼓勵。另外30分鐘我永遠不會回來,謝謝谷歌!

0

android:capitalize現已棄用。

而不是使用android:capitalize="words",你應該考慮使用android:inputType="textCapWords"

根據您的需要,您還可以使用多個值,例如android:inputType="textCapWords|textPersonName"