2011-10-09 129 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版本,這不再是真實的,清單合併將能夠使用庫和應用程序清單。 –