大家在換成Android Support Library 23.2之後都遇到了哪些issues呢?
換了23.2之後 出現了不少問題 目前發現的一些還只是界面上的(design 23.2)比如
- fitSystemWindow的一些問題修復了.
- coordinateLayout的anchor不能設置成為parentView了(大概是因為能用layout_gravity吧)
不知道大家還遇到了哪些問題,分享下,讓別人少踩點坑QAQ
Night mode 在 6.0 上面偶爾有部分 view 無法變色。群里好幾個小夥伴遇到過類似的問題。我暫時回滾到了上個版本(23.1.1),目前在 23.1.1 下使用官方夜間模式的解決方案是:重載 Application 和 BaseActivity 的 getResource() 方法:
private boolean hasInitedResource = false;
@Overridepublic Resources getResources() {
Resources resources = super.getResources();
if (resources == null) return null; // Resource may return null on Samsung 4.1-
if (!hasInitedResource) {
hasInitedResource = true;
boolean on = DefaultPreference.getInstance().isDarkTheme();
Configuration config = new Configuration(resources.getConfiguration());
config.uiMode = ~Configuration.UI_MODE_NIGHT_MASK;
config.uiMode |= on ? Configuration.UI_MODE_NIGHT_YES : Configuration.UI_MODE_NIGHT_NO;
resources.updateConfiguration(config, null);
}
return resources;
}
這樣就可以直接在 xml 中使用 -night 修飾符了,和官方實現理論上應該達到的效果完全一致:
更新:群里 @Rikka 醬研究出了 23.2 在 6.0 下的解決方案:UiModeManager uiManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
uiManager.setNightMode(UiModeManager.MODE_NIGHT_AUTO);
這樣就可以跑 23.2 的官方切換方案了,並且官方方案不需要 activity.recreate() ,體驗更好。
再更新:修改系統 UiModeManager 的方法可能會造成其他 App 異常,建議大家等 Google 官方的修復。再再更新:Google 已發布 23.2.1。但切換等細節上仍有問題…看到有 BottomSheet 好開心,不用用第三方的了。
然後就在剛才,立刻遇到了 https://code.google.com/p/android/issues/detail?id=201825。
UPDATE:今天我又遇到了 Back Arrow and Overflow Icons Wrong Color in Pre-Lollipop Devices After Updating to Support Library 23.2.0……一個 Button,background 是 selector drawable,selector item 里 drawable 使用 attr 引用,如 ?attr/colorPrimaryDark,會掛掉,改成 @color 正常。如果主題里加了 buttonStyle 用了此類型 selector 也會有問題。
這版本刪除了一些資源,如果項目里或第三方庫里有使用到的話也需要處理。
...
珍愛生命,謹慎更新!AppbarLayout和下面的包裹RecyclerView的SwipeRefreshLayout都在用的時候,經常出現AppbarLayout滑上去就滑不下來的問題,直接就觸發下拉刷新了。。。
你有一個LinearLayout,在運行時通過
FragmentManager.add(R.id.layout_id, frag1);
FragmentManager.add(R.id.layout_id, frag2);FragmentManager.add(R.id.layout_id, frag3);FragmentManager.add(R.id.layout_id, frag4);添加了4個Fragment,按正常人思維,應該是frag1->frag2->frag3->frag4在LinearLayout中順序排列,再不濟也是frag4->frag3->frag2->frag1倒序排列,好歹是有個順序,但尼瑪最終順序是Frag4-&>Frag1-&>Frag2-&>Frag3是什麼鬼,看樣子好像是先添加了最後一個,然後其他的按順序添加。我們項目中布局是Activity中有個ViewPager,每一個Item是Fragment,在Fragemnt通過ChildFragmentManager添加的了幾個Child Fragment,然後更新到23.2後順序就亂了。。RecyclerView添加auto measurement,可以根據內容的大小覺得自身的大小。
但是如果之前item的布局文件高度是match_parent,item就會被撐大。。。剛遇到的23.2.0下的一個坑。TabLayou增加了Tab緩存池,但是是靜態的,也就是說被remove掉的tab會被放入池子中,但是當一個新的TabLayout去newTab的時候取出來的Tab可能就是之前的Tab,它的parent是之前的TabLayout,這樣在addTab的時候就會出現異常"Tab belongs to a different TabLayout."
AS2.0 提示datainding包不存在,然而這是我從github上down下來的工程。
我的APP在啟動的時候,在5.0以下版本直接崩潰,提示toolbar錯誤,但是我根本就沒用toolbar啊。。。
還沒換,但是我想知道,nestedScrollview在慣性滑動後,點擊事件無法立即生效的bug有沒解決
support的除了RecyclerView的item高度match_parent以外暫時不清楚但是今天更新了AS到 2.0 Beta6 之後,apt和AndroidDataBinding掛了(也就是說沒辦法自動生成java輔助類了...),然後我重裝回去了Beta5...
Android4.4的手機和模擬器都直接奔潰
在CoordinatorLayout里,SwipeRefreshLayout與AppbarLayout下拉衝突。當RecyclerView拉到頂部時,SwipeRefreshView會搶焦點,導致只能下拉刷新,不能把AppbarLayout拉下來。
RecyclerView列表條目顯示不全。RecyclerView里的item如果是個RecyclerView,那麼當子RecyclerView的OnMeasured方法調用時,recycle對象里的數量是0,findchild會空指針,不不處理會崩潰。其他的問題還沒測試。----------------------------------目前已全部回滾到23.1.1版本。不敢用新的。
推薦閱讀:
※手機跑分的實踐性是否有如一些廠商所吹的那麼高?
※三星 Note 7 的自燃事件會對三星造成怎樣的影響?
※17年,尋找出路的一年
※安卓8.1加入神經網路API ,拉開了消費級人工智慧終端化的序幕
※如何評價TapTap?
TAG:Android | MaterialDesign |