Дійсно дуже прикро, що ви не можете зробити це зі стилями ( <item name="android:textAllCaps">true</item>
) або з кожним файлом макета XML з textAllCaps атрибутом , і єдиний спосіб зробити це насправді за допомогою theString.toUpperCase () у кожному з рядків, коли ви це робите a textViewXXX.setText (theString).
У моєму випадку я не хотів мати theString.toUpperCase () скрізь у своєму коді, але мати централізоване місце для цього, тому що я мав деякі дії та перелічує макети елементів з TextViews, які там, де слід постійно писати великі літери (a заголовок) та інші, хто цього не зробив ... так ... деякі люди можуть подумати, що це надмірність, але я створив власний клас CapitalizedTextView, що розширює android.widget.TextView і переоцінив метод setText, використовуючи великі літери з тексту.
Принаймні, якщо дизайн зміниться або мені потрібно видалити з великої літери текст у майбутніх версіях, мені просто потрібно змінити звичайний TextView у файлах макета.
Тепер, врахуйте, що я це зробив, тому що дизайнер програми насправді хотів цього тексту (заголовки) у CAPS у всьому додатку, незалежно від оригінальної написання контенту, а також у мене були інші звичайні TextView, де з великої літери вийшов власне вміст .
Це клас:
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.