From 7c03008465f80280679066916826fd7c494b4806 Mon Sep 17 00:00:00 2001 From: Andy Scherzinger Date: Tue, 13 Jan 2026 14:40:57 +0100 Subject: [PATCH] style(avatar): respect avatar border for TextDrawable ...since they can't resize automatically, so the border must be calculated into the radius Signed-off-by: Andy Scherzinger --- .../owncloud/android/ui/AvatarGroupLayout.kt | 3 +- .../owncloud/android/utils/DisplayUtils.java | 28 ++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.kt b/app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.kt index b57e29a083b6..27beb655fb0f 100644 --- a/app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.kt +++ b/app/src/main/java/com/owncloud/android/ui/AvatarGroupLayout.kt @@ -111,7 +111,8 @@ class AvatarGroupLayout @JvmOverloads constructor( avatarRadius, resources, avatar, - context + context, + avatarBorderSize ) } } diff --git a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java index f6f43e933140..1a232702f174 100644 --- a/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/app/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -460,6 +460,7 @@ public static void setAvatar(@NonNull User user, @NonNull String userId, AvatarG * @param avatarRadius the avatar radius * @param resources reference for density information * @param callContext which context is called to set the generated avatar + * @param context general context */ public static void setAvatar(@NonNull User user, @NonNull String userId, @@ -469,6 +470,30 @@ public static void setAvatar(@NonNull User user, Resources resources, Object callContext, Context context) { + setAvatar(user, userId, displayName, listener, avatarRadius, resources, callContext, context, 0); + } + + /** + * fetches and sets the avatar of the given account in the passed callContext + * + * @param user the account to be used to connect to server + * @param userId the userId which avatar should be set + * @param displayName displayName used to generate avatar with first char, only used as fallback + * @param avatarRadius the avatar radius + * @param resources reference for density information + * @param callContext which context is called to set the generated avatar + * @param context general context + * @param avatarBorder value in case the avatar has a border, like in the case of the AvatarGroupLayout + */ + public static void setAvatar(@NonNull User user, + @NonNull String userId, + String displayName, + AvatarGenerationListener listener, + float avatarRadius, + Resources resources, + Object callContext, + Context context, + int avatarBorder) { if (callContext instanceof View v) { v.setContentDescription(String.valueOf(user.toPlatformAccount().hashCode())); } @@ -495,7 +520,8 @@ public static void setAvatar(@NonNull User user, // if no one exists, show colored icon with initial char if (avatar == null) { try { - avatar = TextDrawable.createAvatarByUserId(displayName, avatarRadius); + avatar = TextDrawable.createAvatarByUserId(displayName, + (avatarRadius - avatarBorder)); } catch (Exception e) { Log_OC.e(TAG, "Error calculating RGB value for active account icon.", e); avatar = ResourcesCompat.getDrawable(resources,