大家在換成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 |