2011-04-29 65 views
7

簡單問題:使用startActivity設置主題/風格()

我在我的Android 3.0應用程序中使用PICK_CONTACT。 問題是,聯繫應用程序有一個輕的主題,而我的應用程序使用黑暗的主題。

所以,問題是:

有沒有辦法使用startActivity()時設置風格/主題?

如果我正在創建自己的庫,並且希望用戶能夠使用自定義樣式,那麼我需要在intent中收到一些東西?有沒有更好的方法來解決這個問題?

+0

你想改變你的應用程序或庫存聯繫人應用程序內的主題嗎? (其主題根據手機btw而異) – smith324 2011-04-29 12:57:17

+0

我希望能夠在開始「活動」之前選擇使用哪個主題。 – Macarse 2011-04-29 13:04:08

回答

4

當使用startActivity()時,是否有方法來設置樣式/主題?

不可以,你無權亂用其他應用的用戶界面,不僅僅是他們有權惹你。

PICK_CONTACT的情況下,如果您願意擁有READ_CONTACTS權限,那麼您就沒有什麼能夠阻止您編寫自己的聯繫人選擇器活動,這是您想要的主題。

如果我正在創建自己的庫,並且我希望用戶能夠使用自定義樣式,那麼我需要接收意圖中的內容?

由於沒有setStyle()方法,動態更改活動的樣式似乎很麻煩。

如果您的庫將作爲Android庫項目提供,您可以爲開發人員提供主題資源和指導,這些開發人員在將活動添加到其清單時可以選擇在編譯時使用哪個主題。

+0

嘿,我不願意惹惱其他應用程序的用戶界面!我可以在Manifest中選擇明/暗主題,以便在運行時設置該主題。 – Macarse 2011-04-29 17:33:47

+0

@Macarse:但聯繫人的「ACTION_PICK」不是您的應用。這是別人的應用程序。在這種情況下,它恰好是操作系統的應用程序......除非用戶恰好安裝了第三方聯繫人管理器,在這種情況下,它可能就是該應用程序。你不知道。如果你想要無縫的外觀和感覺的整合,你必須推出你自己的用戶界面。如果你想要方便,可以通過'Intents'鏈接到其他應用程序,但是你必須讓它們選擇UI的樣子。 – CommonsWare 2011-04-29 17:42:19

+0

@CommonsWare:好的。感到尷尬的是無法打電話從一系列可能性中設置主題。另一件令我想知道的事情是,如果我想讓我的android應用程序擁有一組主題並讓用戶決定使用哪一個,我必須從'intent'中獲取這個信息,這聽起來很糟糕:(。這應該放在android庫中 – Macarse 2011-04-29 18:06:40

3

一般有指定主題/風格的活動應該推出的沒有標準的方法:你的想法(把東西在Intent)實際上是做的一個很好的方式,但是一旦這又不是標準。

通過標準的聯繫人應用程序源徘徊(https://android.googlesource.com/platform/packages/apps/Contacts )沒有辦法在任何PICK_CONTACT將調用活動類的指定的主題。

最好的辦法是建立一個自定義的聯繫人選擇器並使用內容提供者。你需要詢問權限,這會有點混亂,但這似乎是獲得你想要的唯一方法。