我有 EditText ,这是十进制的,我使用xml中的 android:maxLength 属性设置其长度:
<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" />
由于它的长度不仅会在UI xml文件中使用,而且还会在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 quantity = typedValue.getFloat();
而不是:
int digitsBefore = typedValue.getFloat();
答案 0 :(得分:36)
为什么不将整数存储在 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"
答案 1 :(得分:1)
您不需要TypedValue
使用以下
(int) this.getResources().getDimension(R.integer.quantity_length)
;
答案 2 :(得分:1)
举个例子,为什么不使用这种方法?
XML
<integer name="quantity_length">10</integer>
JAVA
getResources().getInteger(R.integer.quantity_length);
答案 3 :(得分:1)
int max = getContext().getResources().getInteger(R.integer.quantity_length);
答案 4 :(得分:0)
使用:
Integer.ParseInt(digitsBefore);
答案 5 :(得分:0)