スタイル(<item name="android:textAllCaps">true</item>
)またはtextAllCapsを含む各XMLレイアウトファイルでそれを実行できないことは、本当に非常に残念です。 属性をです、そしてそれを行う唯一の方法は、実際に行うときに各文字列でtheString.toUpperCase()を使用することですtextViewXXX.setText(theString)。
私の場合、コードのすべての場所にtheString.toUpperCase()を配置したくはありませんでしたが、常に大文字になっているはずのTextViewを含むアクティビティとリストアイテムレイアウトがあるため、それを一元化した場所にしたいと思いました(aタイトル)とそうでない人...そう...一部の人はやり過ぎだと思うかもしれませんが、android.widget.TextViewを拡張する独自のCapitalizedTextViewクラスを作成し、その場でテキストを大文字にするsetTextメソッドをオーバーライドしました。
少なくとも、デザインが変更された場合、または将来のバージョンで大文字のテキストを削除する必要がある場合は、レイアウトファイルで通常のTextViewに変更する必要があります。
アプリのデザイナーが元のコンテンツの大文字に関係なく、アプリ全体でCAPSでこのテキスト(タイトル)を実際に必要としていたため、これを行ったことを考慮に入れてください。 。
これはクラスです:
package com.realactionsoft.android.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewTreeObserver;
import android.widget.TextView;
public class CapitalizedTextView extends TextView implements ViewTreeObserver.OnPreDrawListener {
public CapitalizedTextView(Context context) {
super(context);
}
public CapitalizedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CapitalizedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text.toString().toUpperCase(), type);
}
}
そして、それを使用する必要があるときはいつでも、XMLレイアウトのすべてのパッケージで宣言します。
<com.realactionsoft.android.widget.CapitalizedTextView
android:id="@+id/text_view_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
TextViewでテキストのスタイルを設定する正しい方法はSpannableStringを使用することであると主張する人もいますが、TextViewとは別のクラスをインスタンス化するので、リソースの消費量が多いことは言うまでもなく、それはやり過ぎです。