android中RecyclerView條目無法橫向鋪滿的問題
阿新 • • 發佈:2019-01-10
該問題網上比較多的答案,都是要求修改inflate條目佈局的方式,具體如下:
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.ble_result_item_unmatched, parent, false);
關鍵在於parent不能傳空.
假如使用
LayoutInflater.from(parent.getContext()).inflate(R.layout.ble_result_item_unmatched, null, false);
則很可能出現條目無法橫向鋪滿的情況,即便你在view的佈局中設定了layout_width為match_parent,原因在於如果parent(即父佈局)傳空,則方法內部實現的時候,會忽略你設定的layout引數,
parent不傳空,attachToRoot傳false:
if (root != null) {
// 系統根據父佈局生成layoutParams
params = root.generateLayoutParams(attrs);
// 如果不新增到父佈局,則新增layoutParams
if (!attachToRoot) {
temp.setLayoutParams(params);
}
}
parent不傳空,attachToRoot傳true:
// 如果父佈局不空,且新增到父佈局
if (root != null && attachToRoot) {
root.addView(temp, params );
}
parent傳空,則只是inflate佈局,但並不會新增layout引數.
如果使用:
View view = View.inflate(parent.getContext(), R.layout.ble_result_item_unmatched, null);
該方法內部是用的也是該方法:
LayoutInflater.inflate(resource, root, root != null)