ソースコードから res/values/dimension.xml のディメンション値を読み込む 質問する

ソースコードから res/values/dimension.xml のディメンション値を読み込む 質問する

値をそのままロードしたいと思います。に 1 つ、 に 1 つの2 つのdimension.xmlファイルがあります。/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」で終わる文字列が取得されます...

ベストアンサー1

私のdimens.xmlには

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

コードで私がそうするなら

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

これは、ドキュメントに記載されているように、現在の電話の密度(私の場合は 48dp x 1.5)を掛けた 72 を返します。

ドキュメントに記載されているとおりです:

特定のリソース ID のディメンションを取得します。単位変換は、リソースに関連付けられている現在の DisplayMetrics に基づきます。

したがって、xmlと同じように正確なdp値が必要な場合は、DisplayMetricsの密度で割るだけです。

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

dpは現在48になります

おすすめ記事