260

TextViewxml属性またはスタイルをに割り当てて、すべて大文字のテキストを作成できるようにしたいと思います。

属性は何もせず、ユーザーが入力したテキスト用であり、ではないように見えandroid:inputType="textCapCharacters"ます。android:capitalize="characters"TextView

スタイルをコンテンツから切り離すことができるように、これを実行したいと思います。私はこれをプログラムで実行できることを知っていますが、コンテンツとコードにスタイルを持たせたくありません。

4

8 に答える 8

381

それはかなり合理的な要求だと思いましたが、現時点ではできないようです。なんという完全な失敗。笑

アップデート

textAllCapsを使用 して、すべて大文字にすることができるようになりました。

于 2010-12-14T00:38:57.717 に答える
150

android:textAllCaps はどうですか?

于 2012-03-15T00:09:05.847 に答える
31

スタイル ( ) を使用したり、 textAllCaps<item name="android:textAllCaps">true</item>属性を持つ各 XML レイアウト ファイルでそれを行うことができないのは非常に残念です。それを 行う唯一の方法は、実際に各文字列で theString.toUpperCase() を使用することです。 textViewXXX.setText(theString)。

私の場合、コードのどこにでも theString.toUpperCase() を使用したくはありませんでしたが、それを行うための一元化された場所が必要でした。 title) とそうでない人...だから...やり過ぎだと思う人もいるかもしれませんが、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 とは別のクラスをインスタンス化することになるため、リソースを消費することは言うまでもなく、それはさらにやり過ぎだと思います。

于 2012-05-29T20:27:21.753 に答える
2

モバイルキーパッドの設定に許可があるようですので、これを行う最も簡単な方法は次のとおりです。

editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});

これがうまくいくことを願っています

于 2017-02-02T06:09:00.963 に答える