2011-10-09 72 views
1

我有一个库项目,它是一个TabActivity,并重新定义了一些样式来绘制我的自定义ToggleButton与不同的背景。 我添加了一个styles.xml文件:android主题和库项目

 <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> 

而且在清单文件中应用的主题。

如果我直接启动活动而不是库项目,一切正常。但是,如果我从另一个项目启动此活动(使用意图),则自定义主题不会应用于切换按钮,它们看起来像默认的Android主题。 其他资源被加载,库项目有一些drawables,他们画好。 我没有使用资产。

其他奇怪的是,如果我改变按钮上的文字:

ToggleButton tbLocal = (ToggleButton)findViewById(R.id.tblocal); 
tbLocal.setText("Local"); 

...当活动开始时,文本没有改变,默认的文本(是/否)被使用。 如果我直接启动库项目活动,这不会发生。

什么可能是错的?

回答

1

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

对于切换按钮开启/关闭文本使用以下命令:

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

谢谢,这解决了这一问题! –

+1

警告,由于少数Android Studio版本,这不再是真实的,清单合并将能够使用库和应用程序清单。 –