19c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin/*
29c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * Copyright (C) 2014 The Android Open Source Project
39c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin *
49c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
59c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * in compliance with the License. You may obtain a copy of the License at
69c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin *
79c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * http://www.apache.org/licenses/LICENSE-2.0
89c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin *
99c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * Unless required by applicable law or agreed to in writing, software distributed under the License
109c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
119c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * or implied. See the License for the specific language governing permissions and limitations under
129c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * the License.
139c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin */
149c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkinpackage android.support.v17.leanback.widget;
159c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin
169c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkinimport android.content.Context;
179c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkinimport android.util.AttributeSet;
189c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkinimport android.view.View;
199c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkinimport android.widget.FrameLayout;
209c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin
219c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin/**
229c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * Customized FrameLayout excludes margin of child from calculating the child size.
239c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * So we can change left margin of rows while keep the width of rows unchanged without
249c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin * using hardcoded DIPS.
25fa0b9a00b48394bd9b7e5d54b2b4a5a33d7bd186Eino-Ville Talvala * @hide
26fa0b9a00b48394bd9b7e5d54b2b4a5a33d7bd186Eino-Ville Talvala */
27fa0b9a00b48394bd9b7e5d54b2b4a5a33d7bd186Eino-Ville Talvalapublic class BrowseRowsFrameLayout extends FrameLayout {
289c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin
299c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    public BrowseRowsFrameLayout(Context context) {
3012da140082323d9aa048b3e928505a0a2adfdda7Yin-Chia Yeh        this(context ,null);
319c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    }
329c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin
339c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    public BrowseRowsFrameLayout(Context context, AttributeSet attrs) {
349c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin        this(context, attrs, 0);
359c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    }
36b0056642cab30647d1f72190d864622bf4728ea0Yin-Chia Yeh
379c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    public BrowseRowsFrameLayout(Context context, AttributeSet attrs,
389c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin            int defStyle) {
399c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin        super(context, attrs, defStyle);
409c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    }
419c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin
42b67a3b36fd569e63c1b8ca6b2701c34c7a3927c1Eino-Ville Talvala    @Override
43b67a3b36fd569e63c1b8ca6b2701c34c7a3927c1Eino-Ville Talvala    protected void measureChildWithMargins(View child,
44b67a3b36fd569e63c1b8ca6b2701c34c7a3927c1Eino-Ville Talvala            int parentWidthMeasureSpec, int widthUsed,
45b67a3b36fd569e63c1b8ca6b2701c34c7a3927c1Eino-Ville Talvala            int parentHeightMeasureSpec, int heightUsed) {
469c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin        final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
479c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin        final int childWidthMeasureSpec = getChildMeasureSpec(parentWidthMeasureSpec,
489c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin                getPaddingLeft() + getPaddingRight() + widthUsed, lp.width);
499c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin        final int childHeightMeasureSpec = getChildMeasureSpec(parentHeightMeasureSpec,
509c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin                getPaddingTop() + getPaddingBottom() + heightUsed, lp.height);
519c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin        child.measure(childWidthMeasureSpec, childHeightMeasureSpec);
529c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin    }
539c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin
549c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin}
559c595174ccaaf3d36315c4a100e47ee4369073f6Igor Murashkin