我很难让它发挥作用。我有一个自定义控件,我已将其移至从我的主应用程序项目中引用的库项目中。在库项目中,我定义了一些可样式化的属性(忽略最后一个中的错字,修复:-)):
<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 样式的类进行膨胀时遇到崩溃。我错过了什么?
旁注:这可能与我的主应用程序中有多个库有关。我有另一个应用程序可以执行完全相同的操作并且不会崩溃,但它只使用一个库(使用这些样式的库)。