アプリケーションをさまざまなブランドで利用できるようにしたいと考えています。これは、いくつかの場所で背景のビットマップを簡単に変更できるだけでなく、テキスト リソースも変更できる必要があることを意味します。
私の計画は、テーマとスタイルを使用することです。ビットマップの切り替えに使用できることはわかっていますが、たとえば TextViews のテキストも変更できますか?
スタイルまたはテーマでテキスト識別子を指定し、後でコードで動的に読み取ることも可能ですか?
[編集]
いくつかの調査の後、もちろん、テキストをスタイルに置き換えることができます。アプリケーションのブランディングに伴うもう 1 つの問題は、パッケージ名を変更する必要があることです。そうしないと、Google Play はブランド化されたアプリケーションを受け入れません。
[編集]
さらに調査した結果、以下に、アクティビティ レイアウトでドローアブルを置換し、テキストビューでテキスト リソースを使用できるようにする 2 つの切り替え可能なテーマを追加する方法に関する小さなサンプルを含めます。あとは setTheme(R.style.Theme1); を呼び出すだけです。または setTheme(R.style.Theme2); setContentView の前の onCreate で。
<-- 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>