As I understood from available Android Resource types, there is no straight way to use float values as resources, unless you use some hacks such as the one mentioned in here. Is there any convention or something for this?
No, There is no direct resource type is provided for float/double.
But Yes there is two hacks to do that.
1) In dimens.xml
<item name="float" type="dimen" format="float">9.52</item>
Referencing from java
TypedValue typedValue = new TypedValue();
getResources().getValue(R.dimen.my_float_value, typedValue, true);
float myFloatValue = typedValue.getFloat();
And Second is as Bojan and Haresh suggested, To use value as string and parse it in your code at runTime.
Add a float to dimens.xml:
<item format="float" name="my_dimen" type="dimen">0.54</item>
To reference from XML:
<ImageView
android:alpha="@dimen/my_dimen"
...
To read this value programmatically you can use ResourcesCompat.getFloat
from androidx.core
Gradle dependency:
implementation("androidx.core:core:${version}")
Usage:
import androidx.core.content.res.ResourcesCompat;
...
float value = ResourcesCompat.getFloat(context.getResources(), R.dimen.my_dimen);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With