|
2 | 2 |
|
3 | 3 | import android.view.ViewGroup; |
4 | 4 | import android.widget.AbsListView; |
| 5 | +import android.widget.LinearLayout; |
5 | 6 | import android.widget.ListView; |
6 | 7 |
|
7 | 8 | import androidx.annotation.NonNull; |
@@ -46,12 +47,23 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable { |
46 | 47 | return; |
47 | 48 | var view = (ViewGroup) param.getResult(); |
48 | 49 | if (view == null) return; |
49 | | - var mainView = (ListView) view.findViewById(android.R.id.list); |
50 | | - mainView.setNestedScrollingEnabled(true); |
| 50 | + var list = view.findViewById(android.R.id.list); |
51 | 51 | var mStatusContainer = new IGStatusView(WppCore.getCurrentActivity()); |
52 | | - var layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, Utils.dipToPixels(88)); |
53 | | - mStatusContainer.setLayoutParams(layoutParams); |
54 | | - mainView.addHeaderView(mStatusContainer); |
| 52 | + if (list instanceof ListView listView) { |
| 53 | + listView.setNestedScrollingEnabled(true); |
| 54 | + var layoutParams = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, Utils.dipToPixels(88)); |
| 55 | + mStatusContainer.setLayoutParams(layoutParams); |
| 56 | + listView.addHeaderView(mStatusContainer); |
| 57 | + } else { |
| 58 | + // RecyclerView |
| 59 | + var paddingTop = list.getPaddingTop(); |
| 60 | + var parentView = (ViewGroup) list.getParent(); |
| 61 | + list.setPadding(0, 0, 0, 0); |
| 62 | + var layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, Utils.dipToPixels(88)); |
| 63 | + layoutParams.topMargin = paddingTop; |
| 64 | + mStatusContainer.setLayoutParams(layoutParams); |
| 65 | + parentView.addView(mStatusContainer, 0); |
| 66 | + } |
55 | 67 | mListStatusContainer.add(mStatusContainer); |
56 | 68 | } |
57 | 69 | }); |
|
0 commit comments