有没有办法在运行时更改android主题?

时间:2009-12-03 15:32:50

标签: android themes

我正在努力在运行时更改android主题样式,当用户选择主题资源时,不仅要更新当前应用程序,还要更改手机上安装的所有应用程序。例如,就像您在设置活动中更改系统语言一样,然后所有应用程序的语言都会更改。我只是无法弄清楚Android框架是如何实现这一点的,任何人都对此有所了解吗?

当我尝试使用PackageManager时,就像这样:

    PackageManager manager = getPackageManager();
    List<ApplicationInfo> apps = manager
            .getInstalledApplications(PackageManager.GET_META_DATA);

    for (ApplicationInfo app : apps) {
        app.theme=android.R.style.Theme_Light_NoTitleBar_Fullscreen;
    }

它无效。 ApplicationInfo中的attribure“主题”是只读的吗?

1 个答案:

答案 0 :(得分:3)

我认为修补国外应用数据并不是一个好主意。您不会获得派生主题,必须检测新安装的应用程序等。 你可能需要一个root用户手机来进行这样的改变,所以为什么不覆盖像Metamorph这样的默认主题资源和所有那些自定义ROM呢? 当然,最好的解决方案是Android首先支持可自定义的默认主题。