0

關於設備方向變化的SO有很多問題 - 這對於Widget可能有意義也可能沒有意義。我想通知有關textScale的配置更改。 (我正在做一些計算,字體大小應該最好使用,並重新排列布局一點,使它看起來不錯)。如何讓Widget知道文字縮放的變化?

話雖如此,我想知道最好的方法是什麼。到目前爲止,我發現:

  • 有一個Intent,不能用的AppWidgetProvider接收(「你無法通過艙單申報組件收到此,只有通過與Context.registerReceiver明確登記爲它()。 「)

  • 清單android:configChanges="fontScale"以清單,這是一個活動,而不是一接收器(即用於小部件......)

  • 然後有一個RemoteViewsService具有方法​​(...) ,但我還不明白,h我會利用這一點。

是否有更多替代檢查?我是否需要使用RemoteViewsService?感謝您的提示!

回答

1

無的,這將工作:

  • 不能註冊,這將有可能在毫秒的Android處置的一個組成部分。所以你不能註冊AppWidgetProvider,因爲它不會停留在內存中。但是,您可以通過另一個組件註冊BroadcastReceiver,因爲此類註冊的BroadcastReceiver的生命週期與註冊它的對象相關聯(請參閱下面的更多說明)。
  • 正如您正確指出的那樣,configChanges標籤僅適用於Activity。
  • 使用RemoteViewsService時,使用集合視圖(列表,網格...)可能會或可能不適用於您的情況?無論如何,它只能在API 11上使用,所以它不適用於薑餅設備。

選項1確實有點工作:https://stackoverflow.com/a/2435879/534471。 問題是註冊的BroadcastReceiver綁定到註冊它的對象。大多數Android組件(ContentProvider,Activity,Service)不會永遠停留,但遲早會被Android破壞。你最好的選擇是使用START_STICKY服務,但是CommonsWare在他的回答中正確地指出這是一個混亂而無效的解決方案(並且不是100%可靠)。

AFAIK沒有可靠的解決方案來解決您的問題。

+0

感謝您的回答。我確實讀過這個SO問題,你們有聯繫,我想我也在我的問題中提到過。至少這是我的意圖。所以謝謝你這樣做,並很好地總結可用的信息。 在我的情況下,它不是方向更改,而是textScale,但這是一個不影響技術解決方案的差異。我遇到的問題是,當用戶增加文本縮放時,有些文本不再適合TextView。我會看看我是否可以改變視圖/佈局配置來適應這種情況。 – AndreasEK 2013-04-30 08:37:46

+0

我刪除了方向更改部分,因爲它確實與問題無關。textScale和orientation有所不同,因爲方向的改變可能以許多不同的方式發生,這些方式是由用戶操作引起的,由程序觸發的,通過滑出鍵盤觸發的。似乎很多捕獲方向改變的方法可能會失敗,其中一個或另一個觸發。無論如何,這不是你感興趣的,我沒有解決你的問題,對不起。 – 2013-04-30 13:15:21

+0

我以某種方式通過給textviews一個「setMinWidth」而不是「setWidth」來解決這個問題,但這個視圖看起來有些尷尬,直到通過其他方式觸發重繪爲止。由於我不希望fontScale頻繁更改,這對我來說是一個可以接受的折中方案。謝謝你的幫助。 – AndreasEK 2013-04-30 22:39:27

相關問題