2011-09-27 3 views
7

私はTextViewを持っています。私はすべての単語の最初の文字を大文字にしようとしています。ここでandroid:capitalize not working

はTextViewのだ:

TextView titleView = (TextView) findViewById(R.id.textView1); 
    titleView.setText(section.replace("_", " ")); 

私は動的にテキストを追加し、それが単語を大文字にすることを期待することはできません:

<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> 

は、ここで私は、テキストを追加している方法ですか?別の形質がandroid:capitalizeに干渉していますか? android:capitalizeは壊れていますか?

返信いただきありがとうございます。

答えて

13

capitalizeは、XMLで設定できる基本的にはKeyListenerなので、ユーザーが入力したテキストのみに適用されます。 As the documentation statesは(強調鉱山):

設定した場合は、このTextViewには、テキスト入力方法を持っており、自動的にどのようなユーザータイプを活用すべきであることを指定します。

how to capitalize the first letter of every word in Javaに関連する質問がありますが、いくつかの有益な回答があります。

+0

うわー、まったく同じ答え... –

+0

ありがとう、私は正しい答えとしてあなたをマークしました。 – emachine

1

あなたは、あなたが使用できるJavaコードで動的テキストをcapitilizingに慣れている場合はこれが後半の答えですが、私が誰かを助けるかもしれないと思う...

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

アンドロイド:生かしますICSに廃止予定なので、私は(文字列に対してString.toUpperCase()でIE)のコードでそれを行うには良いはず推測される

もう一つの試みは、可能性があり

android:inputType="textCapWords" 

しかし、私はEditTextを動作させる必要があると思います。

これがあなたのコードの理由であるかどうかわかりませんをどのバージョンにターゲティングしていますか?あなたは上記のAPIレベル14とをターゲットに設定している場合

13

、あなたは

アンドロイドを使用する必要があります。

それ以外の場合はtextAllCaps = "true" を、あなたはこの動作を自分で実装する必要があります。

+0

ありがとうございます。今私はAPIレベル8でこれを動作させることができない理由を知っています:) –

0

@シャインの答えが正しい私はなぜそれがダウン投票したのか分からない。アンドロイド:大文字には、残念ながらのTextViewドキュメントはこのことを示すために失敗するAPI 3で廃止されました、証明はR.attrに埋め込まれた部分されています

R.attr

Androidのスタジオも、この属性は廃止されたことを通知するために失敗しました。別の30分私は、Googleに感謝することはありません!

0

android:capitalizeは廃止されました。

android:capitalize="words"の代わりにandroid:inputType="textCapWords"を使用することを検討してください。

必要に応じて、android:inputType="textCapWords|textPersonName"などの複数の値を使用することもできます。