RecyclerView常見問題解決方案,RecyclerView巢狀自動滾動,RecyclerView 高度設定wrap_content 無作用等問題
阿新 • • 發佈:2019-01-06
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.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);