2010-08-31 31 views
16

我想在我的應用中使用「更改主題」功能。如果我在onCreate()中調用setTheme(),則存在一個問題。在Android應用中實現更改黑色/淺色主題功能

在我啓動我的應用程序之後,一秒鐘出現純白色背景(因爲我在清單中設置了輕量級主題)。之後,根據用戶的主題偏好,我的活動的完整佈局顯示 - 無論是白色還是黑色背景。

有什麼辦法可以改變發射後出現白色或黑色背景嗎?

+0

應用程序調用主題或創建活動?我不知道沒有任何代碼,但它聽起來像沒有放在應用程序標籤中? – Bactos 2010-09-09 00:09:30

+0

主題在清單中設置。但即使我沒有在清單中手動設置它,它也會使用默認主題。在清單中設置默認主題等同於不在清單中設置任何主題。 – fhucho 2010-09-09 10:30:49

回答

9

請確保在致電setContentView()之前致電setTheme()onCreate()。然後,如果您想稍後再次動態更改主題,則應該重新開始活動。

+0

當我這樣做時,我仍然可以看到默認的主題。 – 2016-04-02 14:42:52

0

另一種方法是有一種閃屏,它將檢查首選變量,然後決定是使用光還是黑暗的主題。這樣你也可以使用XML佈局。

編輯:另一種方法是讓所有的佈局定義的東西在onCreate()方法,然後只是在準備好時觸發onStart()方法。

1

如果要添加一個主題,整個程序比你可以做啓動:

在你的清單,你添加到您正在使用一個主題您的應用程序標籤。

<application android:theme="@style/mythemename"> 

然後看 Theme XML,以確保你有你在適當的地方需要什麼聲明。

如果它只是一個特定的動作,你可以添加活性標籤

<activity android:theme="@android:style/Theme.propertyname"> 

您還可以,如果你想你的主題只是改變了背景顏色,遵循相同的模式與任何活動或應用程序標記(您正在使用的任何一個標記),並將項目名稱「colorbackground」設置爲您想要的。

您也可以使用 Theme XML並在您當前的主題中重做您想要的內容,並使用上述方法調用您的自定義主題。

我希望這可以幫助,如果不是,請讓我知道,這樣我可能會在未來更好地幫助。

相關問題