Я хотел бы, чтобы мое приложение было доступно под разными брендами — это означает, что должна быть возможность легко изменять фоновые растровые изображения в нескольких местах, а также изменять текстовые ресурсы.
Мой план состоит в том, чтобы использовать темы и стили, я знаю, что их можно использовать для переключения растровых изображений, но позволят ли они мне также изменять тексты, например, в TextViews?
Можно ли также указать в стиле или теме текстовый идентификатор, а затем динамически прочитать его в коде?
[РЕДАКТИРОВАТЬ]
После некоторого исследования, конечно, тексты могут быть заменены стилями. Еще одна проблема, связанная с брендингом приложения, — это необходимость изменить имя пакета, иначе Google Play не примет наше фирменное приложение.
[РЕДАКТИРОВАТЬ]
После дополнительных исследований ниже я привожу небольшой пример того, как добавить две переключаемые темы, которые позволят заменить рисование в макете активности и текстовый ресурс в текстовом представлении. Осталось вызвать setTheme(R.style.Theme1); или setTheme(R.style.Theme2); в onCreate перед setContentView.
<-- attrs.xml />
<resources>
<attr name="ProductName" format="reference"/>
<attr name="ProductBackground" format="integer"/>
</resources>
<-- styles.xml />
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme1" parent="android:Theme.Light">
<item name="ProductName">@string/s_product_1_name</item>
<item name="ProductBackground">@drawable/back_1_vga</item>
</style>
<style name="Theme2" parent="android:Theme.Light" >
<item name="ProductName">@string/s_product_2_name</item>
<item name="ProductBackground">@drawable/back_2_vga</item>
</style>
</resources>
<-- my activity layout />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?ProductBackground"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
tools:context=".MainActivity"
android:background="#ff0000"
android:text="?ProductName"
/>
</RelativeLayout>