Merge "Correct colors on forcibly decorated custom notifications" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-02-08 19:17:47 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 7 deletions

View File

@@ -29,6 +29,30 @@ public class NotificationDecoratedCustomViewWrapper extends NotificationTemplate
private View mWrappedView = null;
/**
* Determines if the standard template contains a custom view, injected by Notification.Builder
*/
public static boolean hasCustomView(View v) {
return getWrappedCustomView(v) != null;
}
private static View getWrappedCustomView(View view) {
if (view == null) {
return null;
}
ViewGroup container = view.findViewById(
com.android.internal.R.id.notification_main_column);
if (container == null) {
return null;
}
Integer childIndex = (Integer) container.getTag(
com.android.internal.R.id.notification_custom_view_index_tag);
if (childIndex == null || childIndex == -1) {
return null;
}
return container.getChildAt(childIndex);
}
protected NotificationDecoratedCustomViewWrapper(Context ctx, View view,
ExpandableNotificationRow row) {
super(ctx, view, row);
@@ -36,13 +60,7 @@ public class NotificationDecoratedCustomViewWrapper extends NotificationTemplate
@Override
public void onContentUpdated(ExpandableNotificationRow row) {
ViewGroup container = mView.findViewById(
com.android.internal.R.id.notification_main_column);
Integer childIndex = (Integer) container.getTag(
com.android.internal.R.id.notification_custom_view_index_tag);
if (childIndex != null && childIndex != -1) {
mWrappedView = container.getChildAt(childIndex);
}
mWrappedView = getWrappedCustomView(mView);
// Custom views will most likely use just white or black as their text color.
// We need to scan through and replace these colors by Material NEXT colors.

View File

@@ -80,6 +80,9 @@ public abstract class NotificationViewWrapper implements TransformableView {
if (Notification.DecoratedCustomViewStyle.class.equals(style)) {
return new NotificationDecoratedCustomViewWrapper(ctx, v, row);
}
if (NotificationDecoratedCustomViewWrapper.hasCustomView(v)) {
return new NotificationDecoratedCustomViewWrapper(ctx, v, row);
}
return new NotificationTemplateViewWrapper(ctx, v, row);
} else if (v instanceof NotificationHeaderView) {
return new NotificationHeaderViewWrapper(ctx, v, row);