我有一个十进制的EditText,我使用xml中的android: maxLlong属性设置它的长度:
<EditText
android:id="@+id/quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="numberDecimal"
android:singleLine="true"
android:maxLength="@integer/quantity_length" />
由于它的长度不仅会在UIxml文件中使用,还会在java类和其他地方使用,我想避免将来更新这个值时出现问题,所以我想把长度集中在dimens. xml资源文件中,如下所示:
dimens. xml
<resources>
<!-- other things -->
<!-- Constants -->
<item name="quantity_length" format="integer" type="integer">10</item>
<!-- other things -->
</resources>
从java类中,我需要读取此值,以便执行:
TypedValue typedValue = new TypedValue();
this.getResources().getValue(R.integer.quantity_length, typedValue, true);
但是我可以注意到没有方法getInt(),只有getFloat():
int digitsBefore = typedValue.getFloat();
所以我需要得到它作为整数……如何做到这一点?当然,也许我可以使用getFloat()得到它,然后转换为整数……但是我不知道这是否是一种优雅的方式…所以有什么想法吗?
更新:Oooppssss我犯了一个错误。它是:int数量=typeValue. getFloat();
而不是:
int digitsBefore = typedValue.getFloat();
为什么不将整数存储在res/integers. xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="quantity_length">12</integer>
</resources>
并访问代码中的值
int myInteger = getResources().getInteger(R.integer.quantity_length);
或者XML
android:maxLength="@integer/quantity_length"
有了你的例子,你为什么不使用这种方法呢?
XML
<integer name="quantity_length">10</integer>
JAVA
getResources().getInteger(R.integer.quantity_length);
您不需要TybedValue
使用以下内容
(int)this. getResources().getDimension(R.int.quantity_length)
;