1. ホーム
  2. android

[解決済み] Android: コードで属性の値を取得するには?

2023-03-18 01:17:12

質問

textApperanceLargeのint値をコードで取り出したいです。 以下のコードは正しい方向に進んでいると思いますが、TypedValueからint値を抽出する方法がわかりません。

TypedValue typedValue = new TypedValue(); 
((Activity)context).getTheme().resolveAttribute(android.R.attr.textAppearanceLarge, typedValue, true);

どのように解決するのですか?

あなたのコードでは textAppearanceLarge 属性が指すスタイル、すなわち テキスト外観.大 であり、Renoが指摘するとおりです。

を取得するために テキストサイズ 属性の値を取得するには、次のコードを追加するだけです。

int[] textSizeAttr = new int[] { android.R.attr.textSize };
int indexOfAttrTextSize = 0;
TypedArray a = context.obtainStyledAttributes(typedValue.data, textSizeAttr);
int textSize = a.getDimensionPixelSize(indexOfAttrTextSize, -1);
a.recycle();

現在 テキストサイズ が指定されたスタイルのピクセル単位のテキストサイズになります。 textApperanceLarge が指すスタイルのテキストサイズ(ピクセル)、または設定されていない場合は-1です。これは typedValue.type がそもそもTYPE_REFERENCE型であったと仮定しているため、最初にそれを確認する必要があります。

数値は 16973890 のリソース ID であることに由来します。 テキスト外観.Large