Я не претендую на правильность решения, но оно работает.Я решил проблему с помощью этого трюка:
Мои атрибуты:
<attr name="arrow_up_active" format="reference" />
<attr name="arrow_down_active" format="reference" />
Мои темы:
<style name="AppThemeLight" parent="Theme.AppCompat.Light.NoActionBar">
....
<item name="arrow_down_block">@drawable/up_active</item>
<item name="arrow_down_active">@drawable/down_active</item>
</style>
<style name="AppThemeDark" parent="Theme.AppCompat.NoActionBar">
....
<item name="arrow_down_block">@drawable/up_active</item>
<item name="arrow_down_active">@drawable/down_active</item>
</style>
Мои переменные:
private TypedArray arrowUpActive, arrowDownActive;
Декларация:
arrowUpActive = getActivity().getTheme().obtainStyledAttributes(new int[] { R.attr.arrow_up_active });
arrowDownActive = getActivity().getTheme().obtainStyledAttributes(new int[] { R.attr.arrow_down_active });
И использование:
imageButton.setImageDrawable(getResources().getDrawable(arrowUpActive.getResourceId(0,1)));
imageButton.setImageDrawable(getResources().getDrawable(arrowDownActive.getResourceId(0,1)));