Android - 支持Motorola上的矢量绘图

时间:2017-08-10 12:19:13

标签: android motorola support-vector-compat

我在摩托罗拉预棒棒糖手机上渲染矢量绘图时遇到问题。我在Moto G和其他KitKat上进行了测试。每次我开始应用程序时,一些图标看起来已损坏,有些图标完全缺失。每次发布后,它们都会以不同的方式被破坏。在联想,三星,AOSP模拟器和其他JB +到Nougat的一切都可以。只有摩托罗拉手机才能很好地使用支持库渲染矢量绘图。有没有人有同样的问题?

5 个答案:

答案 0 :(得分:2)

在TextView的drawableLeft属性中也支持Vector Drawables。 转到此链接Android Studio 1.4

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/icon"

答案 1 :(得分:2)

尝试将以下内容添加到Application类的onCreate()方法中:

AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

来自官方文档:

  

启用后,AppCompat可以从框架中拦截一些可绘制的通货膨胀,从而实现DrawableContainer资源内矢量抽取的隐式通货膨胀。
  然后,您可以在ImageView上的android:src或TextView上的android:drawableLeft等场所使用这些drawable。
  此功能默认为禁用,因为启用它可能会导致内存使用问题,以及更新配置实例时出现问题   如果手动更新配置,则可能不希望启用此配置。你被警告了。

答案 2 :(得分:1)

在我的研究中,我找到了两种方法来支持棒棒糖前设备上的矢量绘图。你可以试试这个。

您可以使用AppCompatImageView

支持带矢量绘图的所有设备
<android.support.v7.widget.AppCompatImageView
                app:srcCompat=""    // your drawable declaration
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
  

android.support.v7.appcompat:srcCompat

     

将drawable设置为此ImageView的内容。允许使用   在较旧版本的平台上运行时,矢量可绘制。

     

需要支持库23.4.0或最新版

来源:https://developer.android.com/reference/android/support/v7/widget/AppCompatImageView.html#attr_android.support.v7.appcompat:srcCompat

另一种方法是在Gradle中配置矢量可绘制设置。在Gradle中包含以下代码。

android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }  

srcCompat

中使用ImageView
<ImageView  
  android:layout_width="wrap_content"  
  android:layout_height="wrap_content"  
  app:srcCompat="@drawable/ic_add" /> 

来源:https://android-developers.googleblog.com/2016/02/android-support-library-232.html

希望它可以帮助你:)

答案 3 :(得分:0)

如果要在VectorView中使用vector,则应使用 srcCompat -AppCompatImageView。但是,如果您想将vector与 drawableLeft 一起使用..请使用此库https://github.com/bsobe/vectorview

答案 4 :(得分:0)

试试这个::: -

Drawable date = AppCompatResources.getDrawable(itemView.getContext(), R.drawable.ic_date_range_black_24dp);
etDeliveryDate.setCompoundDrawablesWithIntrinsicBounds(date, null, null, null);