You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android API 19启动MyActivity崩溃,API21及以上版本正常

解决Android API 19中加载矢量图导致的Activity崩溃问题

我之前也碰到过一模一样的情况——在API 21+上运行完全正常,但到了API 19(KitKat)就因为矢量图加载直接崩溃。从你的崩溃堆栈能明确看出问题根源:AppCompatButton通过android:drawableRight/android:drawableEnd引用矢量图时,低版本系统的原生TextView组件无法解析<vector>标签,哪怕你已经配置了vectorDrawables.useSupportLibrary = true和AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)也没用,因为原生的android:命名空间属性不会走AppCompat的兼容逻辑。

核心解决方案:改用AppCompat兼容属性替换原生属性

你需要把Button的android:drawableRight和android:drawableEnd替换成AppCompat库专门提供的app:drawableRightCompat和app:drawableEndCompat,这些兼容属性会由AppCompat框架接管处理,能在低版本系统中正确加载矢量图。

修改后的Button代码

<android.support.v7.widget.AppCompatButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorAccent"
    app:drawableEndCompat="@drawable/ic_warning_white_24px"
    app:drawableRightCompat="@drawable/ic_warning_white_24px"
    android:gravity="start|center_vertical"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:text="Button"
    android:textColor="@color/white" />

额外确认项

  • 确保布局文件已正确引入app命名空间(你的代码里已经配置,这里再核对下):
    xmlns:app="http://schemas.android.com/apk/res-auto"
    
  • 保留已有的build.gradle配置:
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
    }
    
  • 确保AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)的调用时机正确,推荐放在MyActivity的静态代码块中:
    public class MyActivity extends AppCompatActivity {
        static {
            AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_my);
        }
    }
    

这样修改后,API 19就能正常加载矢量图,不会再出现InflateException崩溃了。

内容的提问来源于stack exchange,提问作者Jay Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:19:04