だから私は、他の人がそれを使用するときにその色を簡単にカスタマイズできるようにしたいAndroidライブラリを持っています。問題は、色が単なる単一のプロパティ (ビューの背景など) ではなく、テーマの色 (ビューの背景、テキストの色、ボタンのストロークなど) に似ていることです。ビュー属性として渡すことはできません。だから私はcolor reference
スタイル、レイアウト、ドローアブルでそれを使用することになりました:
色.xml:
<resources>
<attr name="color" format="reference" />
</resources>
レイアウト.xml:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?attr/color">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="?attr/color"/>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/LibraryTheme.TextAppearance"/>
</LinearLayout>
ライブラリ プロジェクトの styles.xml:
<style name="LibraryTheme.TextAppearance">
<item name="android:textColor">?attr/color</item>
<item name="colorControlNormal">?attr/color</item>
<item name="android:textColorHint">?attr/color</item>
<item name="colorControlActivated">?attr/color</item>
<item name="colorControlHighlight">?attr/color</item>
</style>
それはうまく機能し、誰かが私のライブラリを使用しているとき、彼は自分のテーマで使用したい色を宣言する必要があります:
アプリ プロジェクトの styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="color">@color/my_color</item>
</style>
問題はこれです: このライブラリをデフォルトの配色で提供したいのです。現在、2 つのオプションで実行できます。
- デフォルトのカラーセットで自分のテーマを宣言すると、ユーザーは自分のテーマを自分のテーマから継承する必要があります。
- ユーザーが自分のテーマの色としてそれを使用できるように、私の color.xml に default_color を入れます。
最初のものは、ユーザーに特定のアプリ テーマ (AppCompact.Light など) を使用するように強制できないため、本当に悪いです。ユーザーがデフォルトをシームレスに使用できるようにする必要があり、テーマにいくつかの色を設定する必要があるため、2番目のものもそれほど優れていません。
他のユーザーが簡単に色を遊べるようにする方法が他にあると思いますか?
ありがとう。