我创建了一个非常小的库,用于更改我的应用程序中的字体。
到目前为止,我一直在膨胀布局后和将TextView添加到布局后更改字体。这有效,但我必须记住为涉及TextView的每个布局更改执行此操作。对于大型项目和长期维护代码来说,这是不可持续的。
我希望有一种方法可以监听从Activity对布局的更改,以便我可以在那里进行字体更改。
我尝试在Activity上实现ViewGroup.OnHierarchyChangeListener,如下所示:
这似乎是一个很好的解决方案,因为我可以侦听
到目前为止,我一直在膨胀布局后和将TextView添加到布局后更改字体。这有效,但我必须记住为涉及TextView的每个布局更改执行此操作。对于大型项目和长期维护代码来说,这是不可持续的。
我希望有一种方法可以监听从Activity对布局的更改,以便我可以在那里进行字体更改。
我尝试在Activity上实现ViewGroup.OnHierarchyChangeListener,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
viewGroup.setOnHierarchyChangeListener(this);
}
这似乎是一个很好的解决方案,因为我可以侦听
onChildViewAdded(View parent,View child)
并获取添加到我的ViewGroup
中的任何View
的引用。唯一的问题是这种方法无法包括ActionBar,但将相同的监听器添加到ActionBar
即可。
然而,onChildViewAdded
从未被调用。
我主要在我的Activity
布局中执行Fragment
事务。我不知道这是否阻止了回调的发生。
现在我正在尝试使用ViewTreeObserver.OnDrawListener
,这是正确的方法还是有其他解决方法来监听ViewGroup
中的更改?