通过其整数引用使用 ScaleType 枚举值

Using ScaleType enum values by its integer reference

为了让我的问题更清楚,我想在布局 xml 中使用 ScaleType,根据布局宽度使用不同的值(例如 sw-600、sw-720 等) ,并且因为它没有明确的常量值,例如布局权重,我不知道是否有可能实现这一点,所以我看了一下 ImageView class 并发现 ScaleTypeenum 具有指定值,因此是否可以使用枚举其指定值?所以当在 xml 中使用它时,它将是

android:scaleType="2" // 2 will be an Integer value assigned differently across different layouts

而不是:

android:scaleType="FIT_START"

这就是我所做的,到目前为止一切顺利。我有一个资源包含不同的值,具体取决于 res 文件夹类型。

w720dp\sizes.xml

<integer name="advert_scaletype">3</integer>

values\sizes.xml

<integer name="advert_scaletype">6</integer>

通过这样做,如果我在平板电脑或 phone 上,我会在图像上得到不同的比例类型。

我的使用方式:

 <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/advert_image"
        android:layout_width="match_parent"
        android:layout_height="230dp"
        android:layout_centerVertical="true"
        android:scaleType="@integer/advert_scaletype"
        android:transitionName="photo"/>

到目前为止我还没有发现任何问题,所以不确定为什么这对其他人不起作用。


如果您要使用的值是float,您可以将其存储在dimens.xml中,格式如下:

<item name="advert_scaletype" format="float" type="dimen">7.6</item>

然后它会像:

 <com.android.volley.toolbox.NetworkImageView 
      ...
      android:scaleType="@dimens/advert_scaletype" />

我之前遇到过同样的问题,我在这里发布我认为目前为止最好的方法:

values\style.xml

<style name="my_imageview_parent_style">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_weight">match_parent</item>
</style>

<style name="my_imageview_child_style" parent="my_imageview_parent_style">
    <item name="android:scaleType">centerInside</item>
</style>

values-XXX\style.xml

<style name="my_imageview_child_style">
    <item name="android:scaleType">fitXY</item>
</style>

values-YYY\style.xml

<style name="my_imageview_child_style">
    <item name="android:scaleType">fitXY</item>
</style>