android主题和库项目

时间:2011-10-09 22:03:05

标签: android android-layout

我有一个库项目,它是一个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");

...活动开始时,文本不会更改,并使用默认文本(是/否)。 如果我直接启动库项目活动,则不会发生这种情况。

有什么不对?

1 个答案:

答案 0 :(得分:1)

您有两个清单文件:一个在您的库项目中,另一个在您的应用程序项目中。您需要在应用程序AndroidManifest.xml文件中应用主题,而不是在库中应用主题(实际上,在库项目清单中定义<activity>元素是没用的。)

对于切换按钮开/关文本,请使用以下内容:

ToggleButton tbLocal = (ToggleButton)findViewById(R.id.tblocal);
tbLocal.setTextOn("LocalOn");
tbLocal.setTextOff("LocalOff");