我有一个库项目,它是一个TabActivity,并重新定义了一些样式来绘制具有不同背景的自定义ToggleButton。 我添加了一个styles.xml文件:
<resources>
<style name="custom_button" parent="@android:style/Widget.Button">
<item name="android:gravity">center_vertical|center_horizontal</item>
<item name="android:textColor">#FFFFFFFF</item>
<item name="android:shadowColor">#FF000000</item>
<item name="android:shadowDx">0</item>
<item name="android:shadowDy">-1</item>
<item name="android:shadowRadius">0.2</item>
<item name="android:textSize">16dip</item>
<item name="android:textStyle">bold</item>
<item name="android:background">@drawable/btn_custom</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
</style>
</resources>
还有一个themes.xml文件:
<resources>
<style name="custom_theme" parent="android:style/Theme.NoTitleBar">
<item name="android:buttonStyleToggle">@style/custom_button</item>
</style>
</resources>
并在清单文件中应用主题。
如果我直接启动活动而不是库项目,那么一切正常。但是如果我从另一个项目启动此活动(使用intent),自定义主题不会应用于切换按钮,它们看起来像默认的android主题。 其他资源被加载,库项目有一些drawables,他们被绘好了。 我没有使用资产。
其他奇怪的是,如果我更改按钮文字:
ToggleButton tbLocal = (ToggleButton)findViewById(R.id.tblocal);
tbLocal.setText("Local");
...活动开始时,文本不会更改,并使用默认文本(是/否)。 如果我直接启动库项目活动,则不会发生这种情况。
有什么不对?
答案 0 :(得分:1)
您有两个清单文件:一个在您的库项目中,另一个在您的应用程序项目中。您需要在应用程序AndroidManifest.xml
文件中应用主题,而不是在库中应用主题(实际上,在库项目清单中定义<activity>
元素是没用的。)
对于切换按钮开/关文本,请使用以下内容:
ToggleButton tbLocal = (ToggleButton)findViewById(R.id.tblocal);
tbLocal.setTextOn("LocalOn");
tbLocal.setTextOff("LocalOff");