AndroidAutoLayout這個庫真的太棒了,很好的解決了android程序員適配各種機型的痛點,不過在使用kotlin的anko開發的同學就會發現,這個庫無法使用。
在看AndroidAutoLayout源碼時就會發現,AndroidAutoLayout會循環搜索所有attribute,根據value值處理不同的適配問題,AutoLayoutHelper類有個isPxVal()方法,傳入字符串,如果是px結尾,就返回true,其他則是android的默認處理,但是anko處理和布局資源是不同的,所以這里anko和AndroidAutoLayout只能選擇其一嗎?No
因為AndroidAutoLayout里還有一個AutoUtils類,可以單獨處理一個view的適配,所以你需要將所有的anko view用這個方法處理一下,但是工作量太大了,每次都要寫也太麻煩,所以你可以寫一個工具類
class AutoLayout {
companion object {
fun auto(view: View):View {
if (view is ViewGroup) {
for (i in 0..view.childCount - 1) {
auto(view.getChildAt(i))
}
}
AutoUtils.auto(view)
return view
}
}
}
這樣就只需要在UI類的根viewgroup上調用一次即可