1. ホーム
  2. アンドロイド

[解決済み】androidのリソース/値に浮動小数点値を追加する。

2022-04-02 12:28:54

質問

TextViewsに行間を空けたい。 android:lineSpacingMultiplier から ドキュメント :

テキストの行間に余分なスペースを入れること。 を乗算器として使用します。

のような浮動小数点値である必要があります。 1.2"のように。

これをいくつかの異なるTextViewsで使用しているので、リソースにグローバルな次元/値を追加したいのですが、どのタグを使用すればよいのか、もし存在するのであれば、それがわかりません。 私は、すべての リソースタイプ しかし、どれもうまくいきません。

私が望むのは、このようなものです。

<resources>
    <dimen name="text_line_spacing">1.4</dimen>
</resources>

編集部:私が意識しているのは android:lineSpacingExtra (単位が付加された次元が必要)ですが、私は android:lineSpacingMultiplier 可能であれば

解決方法は?

解決策はあります。

<resources>
    <item name="text_line_spacing" format="float" type="dimen">1.0</item>
</resources>

このようにすると、フロート番号は@dimenの下になります。なお、formatやtypeは他の修飾子も使用可能です。

形式 = 囲むデータ型。

  • フロート
  • ブーリアン
  • 分数
  • 整数
  • ...

とtypeの略です。

Type = リソースタイプ(R.XXXXX.nameで参照)。

  • カラー
  • ディメンション
  • 文字列
  • スタイル
  • etc...

コードからリソースを取得するには、次のスニペットを使用する必要があります。

TypedValue outValue = new TypedValue();
getResources().getValue(R.dimen.text_line_spacing, outValue, true);
float value = outValue.getFloat();  

これが分かりにくいことは承知しています (あなたは次のような呼び出しを期待するでしょう) getResources().getDimension(R.dimen.text_line_spacing) ) が、Android の dimensions は特殊な扱いで、純粋な浮動小数点数は有効な寸法ではありません。


さらに、浮動小数点数を次元に入れるための小さなハックもありますが 注意事項 これは <強い 本当にハック フロートレンジと精度を失う可能性があるのです。

<resources>
    <dimen name="text_line_spacing">2.025px</dimen>
</resources>

で、コードから、そのフロートを得るには

float lineSpacing = getResources().getDimension(R.dimen.text_line_spacing);

この場合 lineSpacing2.024993896484375 であり 2.025 となります。