/*
* Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com>
* All Rights Reserved.
*/
package me.zhanghai.android.douya.ui;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.support.v4.view.GravityCompat;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.widget.FrameLayout;
/**
* @see DispatchInsetsHelper
*/
public class DispatchInsetsFrameLayout extends FrameLayout {
private DispatchInsetsHelper mInsetsHelper = new DispatchInsetsHelper(
new DispatchInsetsHelper.Delegate() {
@Override
public int getGravityFromLayoutParams(ViewGroup.LayoutParams layoutParams) {
int gravity = ((LayoutParams) layoutParams).gravity;
// See FrameLayout.layoutChildren().
return gravity != -1 ? gravity : Gravity.TOP | GravityCompat.START;
}
@Override
public ViewGroup getOwner() {
return DispatchInsetsFrameLayout.this;
}
@Override
public void superAddView(View child, int index, ViewGroup.LayoutParams params) {
DispatchInsetsFrameLayout.super.addView(child, index, params);
}
@Override
public boolean superAddViewInLayout(View child, int index,
ViewGroup.LayoutParams params,
boolean preventRequestLayout) {
return DispatchInsetsFrameLayout.super.addViewInLayout(child, index, params,
preventRequestLayout);
}
});
public DispatchInsetsFrameLayout(Context context) {
super(context);
}
public DispatchInsetsFrameLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DispatchInsetsFrameLayout(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public DispatchInsetsFrameLayout(Context context, AttributeSet attrs,
int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public WindowInsets dispatchApplyWindowInsets(WindowInsets insets) {
return mInsetsHelper.dispatchApplyWindowInsets(insets);
}
@Override
public void addView(View child, int index, ViewGroup.LayoutParams params) {
mInsetsHelper.addView(child, index, params);
}
@Override
protected boolean addViewInLayout(View child, int index, ViewGroup.LayoutParams params,
boolean preventRequestLayout) {
return mInsetsHelper.addViewInLayout(child, index, params, preventRequestLayout);
}
}