从Android中的dimens.xml资源文件中获取整数值

时间:2015-01-05 14:56:25

标签: android android-resources

我有 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();

6 个答案:

答案 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)

我已经在Android Studio 3.3.1和SDK棒棒糖上进行了测试

关注路径...

清理并构建... 我很难过,认为它不起作用,但是删除文件并重新添加后,又很少清理和构建,我发现它的工作很奇怪。 ..

1。这有效(请注意刻度线及其路径)

works

2。这是证据

UPDATED ANSWER / February - 2019