是否可以创建Theme而不是预先编译有限数量的主题(即操作系统附带的主题和资源xml中的)?该主题将在基于用户配置的应用程序启动期间应用(值在运行时发生更改,但在创建样式化 Activity 之前,这些值来自很大范围而不是一组的http服务)。

在需要在任何地方使用自定义View类之前,任何其他解决方案都是受欢迎的。

我现在需要的是设置全局默认的TextView文本颜色,当然我不想在任何地方都使用子类,我认为通过优化而不会造成巨大的麻烦,或者至少看到性能差异会很棒。

最佳答案

好吧,这可能有点太过分了,但是这里有个镜头。

public class BaseActivity extends Activity{

    @Override
    public void onResume() {
        ViewGroup root = ((ViewGroup)findViewById(android.R.id.content));
        applyTheme(root);
    }

    private void applyTheme(View view){
        if (view instanceof ViewGroup && ((ViewGroup) view).getChildCount() !=0){
            for (int i = 0; i< ((ViewGroup) view).getChildCount(); i++){
                applyTheme(((ViewGroup) view).getChildAt(i));
            }
        } else {
            if (view instanceof TextView){
                ((TextView) view).setTextColor(your_color_from_server_here);
            }
        }
    }
}

并让您的所有 Activity 都扩展BaseActivity。

关于android - 不要使用预编译的主题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11786583/

10-12 04:30