| 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; | |
| } | |
| } |