これを機能させるのに最も苦労しています。メイン アプリ プロジェクトから参照されるライブラリ プロジェクトに移動したカスタム コントロールがあります。ライブラリ プロジェクトでは、いくつかのスタイル設定可能な属性を定義しています (最後のタイプミスは無視して、修正してください :-)):
<declare-styleable name="PinLockKeyPad">
<attr name="keypadKeyBackground" format="reference" />
<attr name="cancelKeyBackground" format="reference" />
<attr name="keypadButtonTextSize" format="dimension" />
<attr name="cancelButtonTextSize" format="dimension" />
<attr name="backspaceButtonImageResouce" format="reference" />
</declare-styleable>
これらのスタイル可能な属性は、Java コードではどこにも参照されていませんが、ライブラリの styles.xml ファイルでは次のように使用されています。
<style name="KeypadButton" parent="MatchBoth">
<item name="android:background">?keypadKeyBackground</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">?keypadButtonTextSize</item>
<item name="android:textStyle">bold</item>
<item name="android:typeface">sans</item>
<item name="android:layout_weight">1</item>
</style>
私のメイン アプリでは、styles.xml で次のことを行いました。
<style name="Theme.App" parent="@style/Theme.Sherlock.Light.DarkActionBar.ForceOverflow">
<item name="keypadKeyBackground">@drawable/keypad_key</item>
<item name="cancelKeyBackground">@drawable/keypad_key</item>
<item name="pinHintTextColor">@color/white</item>
<item name="pinInputBackground">@color/white</item>
<item name="keypadButtonTextSize">18sp</item>
<item name="cancelButtonTextSize">18sp</item>
<item name="backspaceButtonImageResouce">@drawable/ic_delete</item>
</style>
そして、私のアプリケーションのテーマで Theme.App を設定しました。ただし、これらの属性が定義されていないため、KeypadButton スタイルを参照するクラスを拡張しようとするとクラッシュします。私は何が欠けていますか?
補足: これは、メイン アプリに複数のライブラリがあることに関連している可能性があります。これとまったく同じことを行い、クラッシュしない別のアプリがありますが、1 つのライブラリ (これらのスタイルが使用されるライブラリ) のみを使用します。