Ark*_*rka 67 android android-support-library androiddesignsupport android-vectordrawable
我使用的是Design Support Library版本23.4.0.我启用了gradle标志:
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Run Code Online (Sandbox Code Playgroud)
我正在使用构建工具版本23.0.2,但仍然,我正在Resources$NotFoundException使用KitKat或更低版本.
它发生在我使用android:drawableLeft或时imageView.setImageResource(R.drawable.drawable_image).
是的,我把它放在我使用drawables的每个活动上
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
这是支持库的错误吗?
Ric*_*ick 76
我需要使用支持库23.4.0才能使用3个单独的东西:
将其添加到build.gradle
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Run Code Online (Sandbox Code Playgroud)将以下内容添加到Application类的onCreate中
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
Run Code Online (Sandbox Code Playgroud)对于要在其中设置矢量可绘制替换的所有xml视图
android:src
Run Code Online (Sandbox Code Playgroud)
同
app:srcCompat
Run Code Online (Sandbox Code Playgroud)
并在代码中替换为:
imageView.setImageResource(...);
Run Code Online (Sandbox Code Playgroud)
同
imageView.setImageDrawable(...);
Run Code Online (Sandbox Code Playgroud)And*_*psa 30
尝试使用:
imageView.setImageDrawable(VectorDrawableCompat.create(getResources(), drawableRes, null));
Run Code Online (Sandbox Code Playgroud)
您不必以AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
这种方式添加.
只需使用VectorDrawableCompat对您的矢量绘图进行充气,就可以了.
Mur*_*rat 25
我们遇到了同样的问题.在Kitkat上看不到矢量drawables.我通过添加AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);活动的onCreate方法解决了这个问题.
在此之前不要忘记添加:
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Run Code Online (Sandbox Code Playgroud)
并为您使用矢量drawable的视图调用setImageResource.我的观点是ImageButton.我有Android SDK构建工具版本23.0.3
zac*_*rav 14
很抱歉迟到了,但这个答案可能会帮助那些想要启用标志的用户AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 所有活动.
1.创建一个扩展到Application(android.app.Application)的类
public class MyApplicationClass extends Application
{
@Override
public void onCreate()
{
super.onCreate();
}
}
Run Code Online (Sandbox Code Playgroud)
2.转到Manifest.xml并将以下行添加到标记中
<application
android:name=".MyApplicationClass"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
Run Code Online (Sandbox Code Playgroud)
3.在MyApplicationClass.java中的onCreate上添加以下代码
// This flag should be set to true to enable VectorDrawable support for API < 21
static
{
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
MyApplicationClass.java的完整代码
import android.app.Application;
import android.support.v7.app.AppCompatDelegate;
/**
* Created by Gaurav Lonkar on 23-Dec-17.
*/
public class MyApplicationClass extends Application
{
// This flag should be set to true to enable VectorDrawable support for API < 21
static
{
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
@Override
public void onCreate()
{
super.onCreate();
}
}
Run Code Online (Sandbox Code Playgroud)
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
Run Code Online (Sandbox Code Playgroud)
在app.gradle中使用它
然后使用AppCompatDrawableManagersetDrawable和getDrawable.适合我
android:drawableLeft在支持库23.3中禁用的地方支持矢量绘图.它在Google+上宣布:
由于23.2.0/23.2.1版本中的实现中发现的问题,我们决定删除允许您在Lollipop前设备上使用矢量drawable的功能.使用app:srcCompat和setImageResource()继续工作.
问题链接:
但是,如果您可以解决这些问题,可以在23.4中使用AppCompatDelegate.setCompatVectorFromResourcesEnabled()重新启用此功能.
如果您对这是如何工作感到好奇,最好的学习者是Chris Banes,他撰写了这个功能.他在博客上详细解释.
改变
imageView.setImageResource(R.drawable.drawable_image)
Run Code Online (Sandbox Code Playgroud)
到
imageView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.drawable_image));
Run Code Online (Sandbox Code Playgroud)
如果要在 xml 中使用 vectordrawable,请使用:
app:srcCompat="@drawable/drawable_image"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31853 次 |
| 最近记录: |