1. 程式人生 > >RecyclerView常見問題解決方案,RecyclerView嵌套自動滾動,RecyclerView 高度設置wrap_content 無作用等問題

RecyclerView常見問題解決方案,RecyclerView嵌套自動滾動,RecyclerView 高度設置wrap_content 無作用等問題

design card ont mpi 焦點 goods rap rfi 高度

1,ScrollView或者RecyclerView1 嵌套RecyclerView2 進入頁面自動跳轉到recyclerView2上面頁面會自動滾動 貌似是RecyclerView 自動獲得了焦點
兩種解決辦法
一,recyclerview去除焦點
recyclerview.setFocusableInTouchMode(false);
recyclerview.requestFocus();
二,在代碼裏面 讓處於ScrollView或者RecyclerView1 頂端的某個控件獲得焦點即可
比如頂部的一個textview
tv_goodsName.setFocusableInTouchMode(true);
tv_goodsName.requestFocus();

2,RecyclerView 高度設置wrap_content 無作用的bug,在listview中這麽設置會不顯示RecyclerView
解決方案:
這是RecyclerView兼容包的bug,23.2.0後官方已經修復了。
所以直接在gradle裏設置用23.2.0及以上的RecyclerView:
compile ‘com.android.support:recyclerview-v7:23.2.0‘

PS:如果修改後構建時報了其他奇怪的錯,可以試試把兼容包也升級一下:
compile ‘com.android.support:cardview-v7:23.2.0‘
compile ‘com.android.support:recyclerview-v7:23.2.0‘
compile ‘com.android.support:appcompat-v7:23.2.0‘
compile ‘com.android.support:design:23.2.0‘

3,RecyclerView 條目布局寬度設置match_parent無效果的問題解決
//這裏為了解決recycleview不能撐滿全屏的問題,這裏layoutManager不管你布局裏是否設置,都不準確,所以需要在代碼裏
//重新設置MATCH_PARENT
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()) {
@Override
public RecyclerView.LayoutParams generateDefaultLayoutParams() {
return new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
}
};
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
xrecyclerview.setLayoutManager(layoutManager);

RecyclerView常見問題解決方案,RecyclerView嵌套自動滾動,RecyclerView 高度設置wrap_content 無作用等問題