2015-09-14 85 views

回答

1

您可以使用ContextWrapper并覆盖其getResources()方法来返回您的自定义资源实现。

例如,你可以做这样的事情在你的活动:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    Context wrappedContext = new MyContextWrapper(this); 
    View v = LayoutInflater.from(wrappedContext).inflate(R.layout.activity_main); 
    setContentView(v); 
} 

这工作,但它不会自动“从应用程序的任何地方”,你必须手动通过适当的包装,只要你调用一个需要Context参数的东西。

Application类本身延伸ContextWrapper,因此也有一个getResources()方法。如果您在自定义Application类中覆盖该类并在AndroidManifest.xml中进行设置,那么任何调用context.getApplicationContext().getResources()的东西都将获得自定义实现。

+0

这不完全是我想要做的,但它解决了问题的主要部分。我可以使用此解决方案来构建更好的解决方案。 –