| package com.android.settings.datausage; |
| |
| import android.content.Context; |
| import android.util.AttributeSet; |
| import android.view.View; |
| import android.widget.LinearLayout; |
| |
| import androidx.annotation.Nullable; |
| |
| public class MeasurableLinearLayout extends LinearLayout { |
| private View mFixedView; |
| private View mDisposableView; |
| |
| public MeasurableLinearLayout(Context context) { |
| super(context, null); |
| } |
| |
| public MeasurableLinearLayout(Context context, @Nullable AttributeSet attrs) { |
| super(context, attrs, 0); |
| } |
| |
| public MeasurableLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { |
| super(context, attrs, defStyleAttr, 0); |
| } |
| |
| public MeasurableLinearLayout(Context context, AttributeSet attrs, |
| int defStyleAttr, int defStyleRes) { |
| super(context, attrs, defStyleAttr, defStyleRes); |
| } |
| |
| @Override |
| protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { |
| super.onMeasure(widthMeasureSpec, heightMeasureSpec); |
| if (mDisposableView != null && getMeasuredWidth() - mFixedView.getMeasuredWidth() |
| < mDisposableView.getMeasuredWidth()) { |
| mDisposableView.setVisibility(GONE); |
| super.onMeasure(widthMeasureSpec, heightMeasureSpec); |
| } else if (mDisposableView != null && mDisposableView.getVisibility() != VISIBLE) { |
| mDisposableView.setVisibility(VISIBLE); |
| super.onMeasure(widthMeasureSpec, heightMeasureSpec); |
| } |
| } |
| |
| public void setChildren(View fixedView, View disposableView) { |
| mFixedView = fixedView; |
| mDisposableView = disposableView; |
| } |
| } |