Skip to content

Commit 811e1dd

Browse files
committed
fix bugs
1 parent 14a15de commit 811e1dd

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

anylayer/src/main/java/per/goweii/anylayer/DecorLayer.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import android.view.LayoutInflater;
88
import android.view.View;
99
import android.view.ViewGroup;
10+
import android.view.ViewParent;
1011
import android.widget.FrameLayout;
1112

1213
import androidx.annotation.CallSuper;
@@ -214,13 +215,27 @@ protected final void setViewMarginTo(@NonNull View view, @NonNull Rect margin) {
214215

215216
@NonNull
216217
protected final Rect getDecorPadding() {
217-
Utils.getViewPadding(getViewHolder().getDecorChild(), mDecorPadding);
218+
mDecorPadding.setEmpty();
219+
Utils.getViewPadding(getViewHolder().getActivityContent(), mDecorPadding);
218220
return mDecorPadding;
219221
}
220222

221223
@NonNull
222224
protected final Rect getDecorMargin() {
223-
Utils.getViewMargin(getViewHolder().getDecorChild(), mDecorMargin);
225+
mDecorMargin.setEmpty();
226+
ViewGroup viewGroup = getViewHolder().getActivityContent();
227+
while (true) {
228+
Utils.getViewMargin(viewGroup, mDecorMargin);
229+
ViewParent viewParent = viewGroup.getParent();
230+
if (!(viewParent instanceof ViewGroup)) {
231+
break;
232+
}
233+
viewGroup = (ViewGroup) viewParent;
234+
Utils.getViewPadding(viewGroup, mDecorMargin);
235+
if (viewGroup == getViewHolder().getDecor()) {
236+
break;
237+
}
238+
}
224239
return mDecorMargin;
225240
}
226241

anylayer/src/main/java/per/goweii/anylayer/utils/Utils.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -135,21 +135,19 @@ public static void getViewSize(@NonNull final View view, @NonNull Runnable runna
135135
}
136136

137137
public static void getViewPadding(@NonNull View view, @NonNull Rect rect) {
138-
rect.setEmpty();
139-
rect.left = view.getPaddingLeft();
140-
rect.top = view.getPaddingTop();
141-
rect.right = view.getPaddingRight();
142-
rect.bottom = view.getPaddingBottom();
138+
rect.left += view.getPaddingLeft();
139+
rect.top += view.getPaddingTop();
140+
rect.right += view.getPaddingRight();
141+
rect.bottom += view.getPaddingBottom();
143142
}
144143

145144
public static void getViewMargin(@NonNull View view, @NonNull Rect rect) {
146-
rect.setEmpty();
147145
if (!(view.getLayoutParams() instanceof ViewGroup.MarginLayoutParams)) return;
148146
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
149-
rect.left = params.leftMargin;
150-
rect.top = params.topMargin;
151-
rect.right = params.rightMargin;
152-
rect.bottom = params.bottomMargin;
147+
rect.left += params.leftMargin;
148+
rect.top += params.topMargin;
149+
rect.right += params.rightMargin;
150+
rect.bottom += params.bottomMargin;
153151
}
154152

155153
public static int getViewMarginLeft(@NonNull View view) {

0 commit comments

Comments
 (0)