提问者:小点点

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


我有一个十进制的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();

共3个答案

匿名用户

为什么不将整数存储在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)