Adapted the measuring of notification content view
We are now measuring all notifications content views with AT_MOST but with an upperboundary. This allows us to put custom views inside our normal views and still not blow up the small size. Also adapted the dimens not to clamp the templates Bug: 24866646 Change-Id: If9053d84a9d91e6bc9964f64b170e3c3260a807d
This commit is contained in:
@@ -58,7 +58,7 @@
|
||||
<item name="status_bar_icon_scale_factor" format="float" type="dimen">1.0</item>
|
||||
|
||||
<!-- Height of a small notification in the status bar-->
|
||||
<dimen name="notification_min_height">84dp</dimen>
|
||||
<dimen name="notification_min_height">86dp</dimen>
|
||||
|
||||
<!-- Height of a small notification in the status bar which was used before android N -->
|
||||
<dimen name="notification_min_height_legacy">64dp</dimen>
|
||||
|
||||
@@ -240,7 +240,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
|
||||
!= com.android.internal.R.id.status_bar_latest_event_content;
|
||||
int headsUpheight = headsUpCustom && beforeN ? mMaxHeadsUpHeightLegacy
|
||||
: mMaxHeadsUpHeight;
|
||||
mMaxViewHeight = mNotificationMaxHeight;
|
||||
mPrivateLayout.setHeights(minHeight, headsUpheight, mNotificationMaxHeight);
|
||||
mPublicLayout.setHeights(minHeight, headsUpheight, mNotificationMaxHeight);
|
||||
}
|
||||
@@ -542,16 +541,23 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
|
||||
}
|
||||
|
||||
private void initDimens() {
|
||||
mNotificationMinHeightLegacy = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_min_height_legacy);
|
||||
mNotificationMinHeight = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_min_height);
|
||||
mNotificationMaxHeight = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_max_height);
|
||||
mMaxHeadsUpHeightLegacy = getResources().getDimensionPixelSize(
|
||||
mNotificationMinHeightLegacy = getFontScaledHeight(R.dimen.notification_min_height_legacy);
|
||||
mNotificationMinHeight = getFontScaledHeight(R.dimen.notification_min_height);
|
||||
mNotificationMaxHeight = getFontScaledHeight(R.dimen.notification_max_height);
|
||||
mMaxHeadsUpHeightLegacy = getFontScaledHeight(
|
||||
R.dimen.notification_max_heads_up_height_legacy);
|
||||
mMaxHeadsUpHeight = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_max_heads_up_height);
|
||||
mMaxHeadsUpHeight = getFontScaledHeight(R.dimen.notification_max_heads_up_height);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param dimenId the dimen to look up
|
||||
* @return the font scaled dimen as if it were in sp but doesn't shrink sizes below dp
|
||||
*/
|
||||
private int getFontScaledHeight(int dimenId) {
|
||||
int dimensionPixelSize = getResources().getDimensionPixelSize(dimenId);
|
||||
float factor = Math.max(1.0f, getResources().getDisplayMetrics().scaledDensity /
|
||||
getResources().getDisplayMetrics().density);
|
||||
return (int) (dimensionPixelSize * factor);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -561,7 +567,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
|
||||
public void reset() {
|
||||
super.reset();
|
||||
final boolean wasExpanded = isExpanded();
|
||||
mMaxViewHeight = 0;
|
||||
mExpandable = false;
|
||||
mHasUserChangedExpansion = false;
|
||||
mUserLocked = false;
|
||||
|
||||
@@ -24,7 +24,6 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -35,7 +34,6 @@ import java.util.ArrayList;
|
||||
public abstract class ExpandableView extends FrameLayout {
|
||||
|
||||
protected OnHeightChangedListener mOnHeightChangedListener;
|
||||
protected int mMaxViewHeight;
|
||||
private int mActualHeight;
|
||||
protected int mClipTopAmount;
|
||||
private boolean mActualHeightInitialized;
|
||||
@@ -49,8 +47,6 @@ public abstract class ExpandableView extends FrameLayout {
|
||||
|
||||
public ExpandableView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
mMaxViewHeight = getResources().getDimensionPixelSize(
|
||||
R.dimen.notification_max_height);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -144,11 +144,11 @@ public class NotificationContentView extends FrameLayout {
|
||||
}
|
||||
if (mContractedChild != null) {
|
||||
int heightSpec;
|
||||
int size = Math.min(maxSize, mSmallHeight);
|
||||
if (shouldContractedBeFixedSize()) {
|
||||
int size = Math.min(maxSize, mSmallHeight);
|
||||
heightSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY);
|
||||
} else {
|
||||
heightSpec = MeasureSpec.makeMeasureSpec(maxSize, MeasureSpec.AT_MOST);
|
||||
heightSpec = MeasureSpec.makeMeasureSpec(size, MeasureSpec.AT_MOST);
|
||||
}
|
||||
mContractedChild.measure(widthMeasureSpec, heightSpec);
|
||||
int measuredHeight = mContractedChild.getMeasuredHeight();
|
||||
|
||||
Reference in New Issue
Block a user