1. ホーム
  2. android

[解決済み] ソースコードからres/values/dimension.xmlからディメンション値を読み込む。

2022-03-27 19:26:28

質問

値をそのまま読み込みたいのですが。 私は、2つの dimension.xml ファイル、1つは /res/values/dimension.xml と、もうひとつは /res/values-sw360dp/dimension.xml .

ソースコードから、次のようなことをやってみたい。

getResources().getDimension(R.dimen.tutorial_cross_marginTop);

これは動作しますが、取得する値は画面密度係数(hdpiは1.5、xhdpiは2.0など)を掛け合わせたものになります。

また、次のようなこともやってみた。

getResources().getString(R.dimen.tutorial_cross_marginTop);

これは原理的にはうまくいくのですが、末尾が "dip" という文字列になってしまいます...。

解決方法は?

dimens.xml には

<dimen name="test">48dp</dimen>

コード内 もし私が

int valueInPixels = (int) getResources().getDimension(R.dimen.test)

これは、ドキュメントにあるように、現在の携帯電話の密度(私の場合は48dp×1.5)を乗算した72を返します。

ドキュメントにある通りです。

<ブロッククオート

特定のリソースIDに対応する次元を取得する。単位変換 は、リソースに関連付けられた現在の DisplayMetrics に基づいています。

xmlのように正確なdp値が必要な場合は、DisplayMetricsの密度で割ればいいわけです。

int dp = (int) (getResources().getDimension(R.dimen.test) / getResources().getDisplayMetrics().density);

dpは現在48です。