2011-10-09 6 views
1

J'ai un projet de bibliothèque, qui est une TabActivity, et redéfini certains styles pour dessiner mon ToggleButton personnalisé avec un arrière-plan différent. J'ai ajouté un fichier styles.xml:Thèmes android et projets de bibliothèque

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

Et un fichier themes.xml:

<resources> 
    <style name="custom_theme" parent="android:style/Theme.NoTitleBar"> 
     <item name="android:buttonStyleToggle">@style/custom_button</item> 
    </style> 
</resources> 

et appliqué le thème dans le fichier manifeste. Tout fonctionne bien si je démarre directement l'activité au lieu d'être un projet de bibliothèque. Mais si je lance cette activité (en utilisant une intention) d'un autre projet, le thème personnalisé n'est pas appliqué aux boutons à bascule, ils ressemblent au thème android par défaut. D'autres ressources sont chargées, le projet de bibliothèque a quelques drawables et ils sont peints ok. Je n'utilise pas d'actifs.

Autre chose étrange est que si je change le texte du bouton:

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

... lorsque l'activité est lancée, le texte est pas changé et le texte par défaut (OUI/NON) est utilisé. Si je démarre directement l'activité du projet de bibliothèque, cela ne se produit pas non plus.

Qu'est-ce qui ne va pas?

Répondre

1

Vous avez deux fichiers manifeste: un dans votre projet de bibliothèque et un autre dans votre projet d'application. Vous devez appliquer votre thème dans le fichier d'application AndroidManifest.xml, et non dans la bibliothèque (en fait, il est inutile de définir l'élément <activity> dans le manifeste du projet de bibliothèque).

Pour bouton à bascule du texte on/off utiliser les éléments suivants:

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

Merci, ce a résolu le problème! –

+1

Attention, depuis quelques versions d'Android Studio, ce n'est plus vrai, et la fusion de manifestes pourra utiliser les librairies et les manifestes d'application. –

Questions connexes