Based upon the comment from @Luksprog I was able to go down a path that led to a not-so-perfect but not-ugly-enough-that-I-hate-it solution.
Since I wasn't creating and adding the views in my ViewGroup constructor and was inflating from an xml file I couldn't just add attributes that reference styles (see this). So I ended up creating an enum attribute that switches between the various styles I could want for this view. Then in the constructor I inflated different layouts (where the styles were set in the xml) based upon this attribute.
Example:
public CustomViewGroup(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initialize(context, attrs, defStyleAttr);
}
private void initialize(Context context, AttributeSet attrs, int defStyleAttr) {
if (attrs != null) {
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomViewGroup, defStyleAttr, 0);
int style = a.getInt(R.styleable.CustomViewGroup_styleType, 0);
switch (style) {
case 0:
View.inflate(context, R.layout.custom_view_group_small, this);
break;
case 1:
View.inflate(context, R.layout.custom_view_group_large, this);
break;
default:
View.inflate(context, R.layout.custom_view_group_large, this);
break;
}
...
}
}
Again not the most elegant solution but its working for me and I can now update the styles pretty easily without having to change a bunch of files.