不要使用预编译的主题

A-L*_*ive 5 android android-theme

是否有可能创建Theme,而不必主题的预编译(意指数量有限,两者的OS运主题和资源XML)?该主题将在应用程序启动期间根据用户配置应用(值在运行时更改,但在创建样式化活动之前,值来自大范围而非集合的http服务).

欢迎使用任何其他解决方案,直到它需要在任何地方使用自定义的View类.

我现在需要的是设置全局默认TextView文本颜色,当然我不想在任何地方使用子类,我认为失去优化没有巨大的灾难,或者至少看到性能差异会很好.

Ben*_*oli 1

好吧,这可能有点太老套了,但这里有一个镜头。

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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并让您的所有活动都扩展 BaseActivity。