diff options
| author | 2023-03-22 09:00:35 +0000 | |
|---|---|---|
| committer | 2023-03-22 09:00:35 +0000 | |
| commit | 39f28a664e4f693ea2c580e26e145d4bc27bc87d (patch) | |
| tree | b2774335f92d7772ed2d2834a5eb4e0131954b23 /java/src | |
| parent | 534f80e0e0fc0615bfd6ae7291ff38b3ac3a8771 (diff) | |
| parent | 6aaafb277958144a39f9ff4c8328a29eb2db6e38 (diff) | |
Merge "Revert "Add headline to sharesheet."" into udc-dev
Diffstat (limited to 'java/src')
9 files changed, 53 insertions, 251 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java index 1dce3b97..341e1d52 100644 --- a/java/src/com/android/intentresolver/ChooserActivity.java +++ b/java/src/com/android/intentresolver/ChooserActivity.java @@ -84,7 +84,6 @@ import com.android.intentresolver.chooser.DisplayResolveInfo; import com.android.intentresolver.chooser.MultiDisplayResolveInfo; import com.android.intentresolver.chooser.TargetInfo; import com.android.intentresolver.contentpreview.ChooserContentPreviewUi; -import com.android.intentresolver.contentpreview.HeadlineGeneratorImpl; import com.android.intentresolver.flags.FeatureFlagRepository; import com.android.intentresolver.flags.FeatureFlagRepositoryFactory; import com.android.intentresolver.flags.Flags; @@ -292,8 +291,7 @@ public class ChooserActivity extends ResolverActivity implements createPreviewImageLoader(), createChooserActionFactory(), mEnterTransitionAnimationDelegate, - mFeatureFlagRepository, - new HeadlineGeneratorImpl(this)); + mFeatureFlagRepository); setAdditionalTargets(mChooserRequest.getAdditionalTargets()); diff --git a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java index 6892b32c..de454cfd 100644 --- a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java @@ -103,8 +103,7 @@ public final class ChooserContentPreviewUi { ImageLoader imageLoader, ActionFactory actionFactory, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { mContentPreviewUi = createContentPreview( targetIntent, @@ -113,8 +112,7 @@ public final class ChooserContentPreviewUi { imageLoader, actionFactory, transitionElementStatusCallback, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); if (mContentPreviewUi.getType() != CONTENT_PREVIEW_IMAGE) { transitionElementStatusCallback.onAllTransitionElementsReady(); } @@ -127,8 +125,7 @@ public final class ChooserContentPreviewUi { ImageLoader imageLoader, ActionFactory actionFactory, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { /* In {@link android.content.Intent#getType}, the app may specify a very general mime type * that broadly covers all data being shared, such as {@literal *}/* when sending an image @@ -142,20 +139,12 @@ public final class ChooserContentPreviewUi { if (!(isSend || isSendMultiple) || (type != null && ClipDescription.compareMimeTypes(type, "text/*"))) { return createTextPreview( - targetIntent, - actionFactory, - imageLoader, - featureFlagRepository, - headlineGenerator); + targetIntent, actionFactory, imageLoader, featureFlagRepository); } List<Uri> uris = extractContentUris(targetIntent); if (uris.isEmpty()) { return createTextPreview( - targetIntent, - actionFactory, - imageLoader, - featureFlagRepository, - headlineGenerator); + targetIntent, actionFactory, imageLoader, featureFlagRepository); } ArrayList<FileInfo> files = new ArrayList<>(uris.size()); int previewCount = readFileInfo(contentResolver, typeClassifier, uris, files); @@ -164,8 +153,7 @@ public final class ChooserContentPreviewUi { files, actionFactory, imageLoader, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); } if (featureFlagRepository.isEnabled(Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW)) { return new UnifiedContentPreviewUi( @@ -175,16 +163,14 @@ public final class ChooserContentPreviewUi { imageLoader, typeClassifier, transitionElementStatusCallback, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); } if (previewCount < uris.size()) { return new FileContentPreviewUi( files, actionFactory, imageLoader, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); } // The legacy (3-image) image preview is on it's way out and it's unlikely that we'd end up // here. To preserve the legacy behavior, before using it, check that all uris are images. @@ -194,8 +180,7 @@ public final class ChooserContentPreviewUi { files, actionFactory, imageLoader, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); } } return new ImageContentPreviewUi( @@ -207,8 +192,7 @@ public final class ChooserContentPreviewUi { actionFactory, imageLoader, transitionElementStatusCallback, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); } public int getPreferredContentPreview() { @@ -323,8 +307,7 @@ public final class ChooserContentPreviewUi { Intent targetIntent, ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { CharSequence sharingText = targetIntent.getCharSequenceExtra(Intent.EXTRA_TEXT); String previewTitle = targetIntent.getStringExtra(Intent.EXTRA_TITLE); ClipData previewData = targetIntent.getClipData(); @@ -341,8 +324,7 @@ public final class ChooserContentPreviewUi { previewThumbnail, actionFactory, imageLoader, - featureFlagRepository, - headlineGenerator); + featureFlagRepository); } private static List<Uri> extractContentUris(Intent targetIntent) { diff --git a/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java index a6bc2164..79444b4e 100644 --- a/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java @@ -24,7 +24,6 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.net.Uri; import android.os.UserHandle; -import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -115,21 +114,7 @@ abstract class ContentPreviewUi { fadeAnim.start(); } - protected static void displayHeadline(ViewGroup layout, String headline) { - if (layout != null) { - TextView titleView = layout.findViewById(R.id.headline); - if (titleView != null) { - if (!TextUtils.isEmpty(headline)) { - titleView.setText(headline); - titleView.setVisibility(View.VISIBLE); - } else { - titleView.setVisibility(View.GONE); - } - } - } - } - - protected static void displayModifyShareAction( + protected static void displayPayloadReselectionAction( ViewGroup layout, ChooserContentPreviewUi.ActionFactory actionFactory, FeatureFlagRepository featureFlagRepository) { diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java index 52e20cf0..2c5def8b 100644 --- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java @@ -45,19 +45,16 @@ class FileContentPreviewUi extends ContentPreviewUi { private final ChooserContentPreviewUi.ActionFactory mActionFactory; private final ImageLoader mImageLoader; private final FeatureFlagRepository mFeatureFlagRepository; - private final HeadlineGenerator mHeadlineGenerator; FileContentPreviewUi( List<FileInfo> files, ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { mFiles = files; mActionFactory = actionFactory; mImageLoader = imageLoader; mFeatureFlagRepository = featureFlagRepository; - mHeadlineGenerator = headlineGenerator; } @Override @@ -68,7 +65,7 @@ class FileContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(resources, layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayPayloadReselectionAction(layout, mActionFactory, mFeatureFlagRepository); return layout; } @@ -80,8 +77,6 @@ class FileContentPreviewUi extends ContentPreviewUi { final int uriCount = mFiles.size(); - displayHeadline(contentPreviewLayout, mHeadlineGenerator.getItemsHeadline(mFiles.size())); - if (uriCount == 0) { contentPreviewLayout.setVisibility(View.GONE); Log.i(TAG, "Appears to be no uris available in EXTRA_STREAM," diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt deleted file mode 100644 index e32bb5c4..00000000 --- a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.intentresolver.contentpreview - -private const val PLURALS_COUNT = "count" - -/** - * HeadlineGenerator generates the text to show at the top of the sharesheet as a brief - * description of the content being shared. - */ -interface HeadlineGenerator { - fun getTextHeadline(text: CharSequence): String - - fun getImageWithTextHeadline(text: CharSequence): String - - fun getImagesHeadline(count: Int): String - - fun getVideosHeadline(count: Int): String - - fun getItemsHeadline(count: Int): String -} diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt deleted file mode 100644 index ae44294c..00000000 --- a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.intentresolver.contentpreview - -import android.content.Context -import com.android.intentresolver.R -import android.util.PluralsMessageFormatter - -private const val PLURALS_COUNT = "count" - -/** - * HeadlineGenerator generates the text to show at the top of the sharesheet as a brief - * description of the content being shared. - */ -class HeadlineGeneratorImpl(private val context: Context) : HeadlineGenerator { - override fun getTextHeadline(text: CharSequence): String { - if (text.toString().isHttpUri()) { - return context.getString(R.string.sharing_link) - } - return context.getString(R.string.sharing_text) - } - - override fun getImageWithTextHeadline(text: CharSequence): String { - if (text.toString().isHttpUri()) { - return context.getString(R.string.sharing_image_with_link) - } - return context.getString(R.string.sharing_image_with_text) - } - - override fun getImagesHeadline(count: Int): String { - return PluralsMessageFormatter.format( - context.resources, - mapOf(PLURALS_COUNT to count), - R.string.sharing_images - ) - } - - override fun getVideosHeadline(count: Int): String { - return PluralsMessageFormatter.format( - context.resources, - mapOf(PLURALS_COUNT to count), - R.string.sharing_videos - ) - } - - override fun getItemsHeadline(count: Int): String { - return PluralsMessageFormatter.format( - context.resources, - mapOf(PLURALS_COUNT to count), - R.string.sharing_items - ) - } -} diff --git a/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java index f2c0564a..5f3bdf40 100644 --- a/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java @@ -54,7 +54,6 @@ class ImageContentPreviewUi extends ContentPreviewUi { private final ImageLoader mImageLoader; private final TransitionElementStatusCallback mTransitionElementStatusCallback; private final FeatureFlagRepository mFeatureFlagRepository; - private final HeadlineGenerator mHeadlineGenerator; ImageContentPreviewUi( List<Uri> imageUris, @@ -62,15 +61,13 @@ class ImageContentPreviewUi extends ContentPreviewUi { ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { mImageUris = imageUris; mText = text; mActionFactory = actionFactory; mImageLoader = imageLoader; mTransitionElementStatusCallback = transitionElementStatusCallback; mFeatureFlagRepository = featureFlagRepository; - mHeadlineGenerator = headlineGenerator; mImageLoader.prePopulate(mImageUris); } @@ -83,7 +80,7 @@ class ImageContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayPayloadReselectionAction(layout, mActionFactory, mFeatureFlagRepository); return layout; } @@ -116,8 +113,6 @@ class ImageContentPreviewUi extends ContentPreviewUi { imagePreview.setTransitionElementStatusCallback(mTransitionElementStatusCallback); imagePreview.setImages(mImageUris, mImageLoader); - updateHeadline(contentPreviewLayout); - return contentPreviewLayout; } @@ -145,17 +140,6 @@ class ImageContentPreviewUi extends ContentPreviewUi { com.android.internal.R.id.content_preview_image_area); } - private void updateHeadline(ViewGroup contentPreview) { - CheckBox includeTextCheckbox = contentPreview.requireViewById(R.id.include_text_action); - if (includeTextCheckbox.getVisibility() == View.VISIBLE - && includeTextCheckbox.isChecked()) { - displayHeadline(contentPreview, mHeadlineGenerator.getImageWithTextHeadline(mText)); - } else { - displayHeadline( - contentPreview, mHeadlineGenerator.getImagesHeadline(mImageUris.size())); - } - } - private void setTextInImagePreviewVisibility( ViewGroup contentPreview, ChooserContentPreviewUi.ActionFactory actionFactory) { int visibility = mFeatureFlagRepository.isEnabled(Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW) @@ -185,7 +169,6 @@ class ImageContentPreviewUi extends ContentPreviewUi { TransitionManager.beginDelayedTransition((ViewGroup) textView.getParent()); textView.setVisibility(isChecked ? View.VISIBLE : View.GONE); shareTextAction.accept(!isChecked); - updateHeadline(contentPreview); }); } actionView.setVisibility(visibility); diff --git a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java index d0cba5bb..e143954e 100644 --- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java @@ -46,7 +46,6 @@ class TextContentPreviewUi extends ContentPreviewUi { private final ImageLoader mImageLoader; private final ChooserContentPreviewUi.ActionFactory mActionFactory; private final FeatureFlagRepository mFeatureFlagRepository; - private final HeadlineGenerator mHeadlineGenerator; TextContentPreviewUi( @Nullable CharSequence sharingText, @@ -54,15 +53,13 @@ class TextContentPreviewUi extends ContentPreviewUi { @Nullable Uri previewThumbnail, ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { mSharingText = sharingText; mPreviewTitle = previewTitle; mPreviewThumbnail = previewThumbnail; mImageLoader = imageLoader; mActionFactory = actionFactory; mFeatureFlagRepository = featureFlagRepository; - mHeadlineGenerator = headlineGenerator; } @Override @@ -73,7 +70,7 @@ class TextContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayPayloadReselectionAction(layout, mActionFactory, mFeatureFlagRepository); return layout; } @@ -125,8 +122,6 @@ class TextContentPreviewUi extends ContentPreviewUi { bitmap)); } - displayHeadline(contentPreviewLayout, mHeadlineGenerator.getTextHeadline(mSharingText)); - return contentPreviewLayout; } diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java index 2d2ae52b..c4e6feb7 100644 --- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java @@ -55,7 +55,6 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { private final MimeTypeClassifier mTypeClassifier; private final TransitionElementStatusCallback mTransitionElementStatusCallback; private final FeatureFlagRepository mFeatureFlagRepository; - private final HeadlineGenerator mHeadlineGenerator; UnifiedContentPreviewUi( List<FileInfo> files, @@ -64,8 +63,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { ImageLoader imageLoader, MimeTypeClassifier typeClassifier, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { + FeatureFlagRepository featureFlagRepository) { mFiles = files; mText = text; mActionFactory = actionFactory; @@ -73,7 +71,6 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { mTypeClassifier = typeClassifier; mTransitionElementStatusCallback = transitionElementStatusCallback; mFeatureFlagRepository = featureFlagRepository; - mHeadlineGenerator = headlineGenerator; mImageLoader.prePopulate(mFiles.stream() .map(FileInfo::getPreviewUri) @@ -89,7 +86,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayPayloadReselectionAction(layout, mActionFactory, mFeatureFlagRepository); return layout; } @@ -118,47 +115,20 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { return contentPreviewLayout; } + setTextInImagePreviewVisibility(contentPreviewLayout, mActionFactory); imagePreview.setTransitionElementStatusCallback(mTransitionElementStatusCallback); - - List<ScrollableImagePreviewView.Preview> previews = new ArrayList<>(); - boolean allImages = !mFiles.isEmpty(); - boolean allVideos = !mFiles.isEmpty(); - for (FileInfo fileInfo : mFiles) { - ScrollableImagePreviewView.PreviewType previewType = - getPreviewType(fileInfo.getMimeType()); - allImages = allImages && previewType == ScrollableImagePreviewView.PreviewType.Image; - allVideos = allVideos && previewType == ScrollableImagePreviewView.PreviewType.Video; - - if (fileInfo.getPreviewUri() != null) { - previews.add(new ScrollableImagePreviewView.Preview( - previewType, - fileInfo.getPreviewUri())); - } - } + List<ScrollableImagePreviewView.Preview> previews = mFiles.stream() + .filter(fileInfo -> fileInfo.getPreviewUri() != null) + .map(fileInfo -> + new ScrollableImagePreviewView.Preview( + getPreviewType(fileInfo.getMimeType()), + fileInfo.getPreviewUri())) + .toList(); imagePreview.setPreviews( previews, mFiles.size() - previews.size(), mImageLoader); - if (mFeatureFlagRepository.isEnabled(Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW) - && !TextUtils.isEmpty(mText) - && mFiles.size() == 1 - && allImages) { - setTextInImagePreviewVisibility(contentPreviewLayout, mActionFactory); - updateTextWithImageHeadline(contentPreviewLayout); - } else { - if (allImages) { - displayHeadline( - contentPreviewLayout, mHeadlineGenerator.getImagesHeadline(mFiles.size())); - } else if (allVideos) { - displayHeadline( - contentPreviewLayout, mHeadlineGenerator.getVideosHeadline(mFiles.size())); - } else { - displayHeadline( - contentPreviewLayout, mHeadlineGenerator.getItemsHeadline(mFiles.size())); - } - } - return contentPreviewLayout; } @@ -185,42 +155,38 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { return previewLayout.findViewById(R.id.scrollable_image_preview); } - private void updateTextWithImageHeadline(ViewGroup contentPreview) { - CheckBox actionView = contentPreview.requireViewById(R.id.include_text_action); - if (actionView.getVisibility() == View.VISIBLE && actionView.isChecked()) { - displayHeadline(contentPreview, mHeadlineGenerator.getImageWithTextHeadline(mText)); - } else { - displayHeadline( - contentPreview, mHeadlineGenerator.getImagesHeadline(mFiles.size())); - } - } - private void setTextInImagePreviewVisibility( ViewGroup contentPreview, ChooserContentPreviewUi.ActionFactory actionFactory) { + int visibility = mFeatureFlagRepository.isEnabled(Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW) + && !TextUtils.isEmpty(mText) + ? View.VISIBLE + : View.GONE; + final TextView textView = contentPreview .requireViewById(com.android.internal.R.id.content_preview_text); CheckBox actionView = contentPreview .requireViewById(R.id.include_text_action); - textView.setVisibility(View.VISIBLE); - boolean isLink = HttpUriMatcher.isHttpUri(mText.toString()); + textView.setVisibility(visibility); + boolean isLink = visibility == View.VISIBLE && HttpUriMatcher.isHttpUri(mText.toString()); textView.setAutoLinkMask(isLink ? Linkify.WEB_URLS : 0); textView.setText(mText); - final int[] actionLabels = isLink - ? new int[] { R.string.include_link, R.string.exclude_link } - : new int[] { R.string.include_text, R.string.exclude_text }; - final Consumer<Boolean> shareTextAction = actionFactory.getExcludeSharedTextAction(); - actionView.setChecked(true); - actionView.setText(actionLabels[1]); - shareTextAction.accept(false); - actionView.setOnCheckedChangeListener((view, isChecked) -> { - view.setText(actionLabels[isChecked ? 1 : 0]); - TransitionManager.beginDelayedTransition((ViewGroup) textView.getParent()); - textView.setVisibility(isChecked ? View.VISIBLE : View.GONE); - shareTextAction.accept(!isChecked); - updateTextWithImageHeadline(contentPreview); - }); - actionView.setVisibility(View.VISIBLE); + if (visibility == View.VISIBLE) { + final int[] actionLabels = isLink + ? new int[] { R.string.include_link, R.string.exclude_link } + : new int[] { R.string.include_text, R.string.exclude_text }; + final Consumer<Boolean> shareTextAction = actionFactory.getExcludeSharedTextAction(); + actionView.setChecked(true); + actionView.setText(actionLabels[1]); + shareTextAction.accept(false); + actionView.setOnCheckedChangeListener((view, isChecked) -> { + view.setText(actionLabels[isChecked ? 1 : 0]); + TransitionManager.beginDelayedTransition((ViewGroup) textView.getParent()); + textView.setVisibility(isChecked ? View.VISIBLE : View.GONE); + shareTextAction.accept(!isChecked); + }); + } + actionView.setVisibility(visibility); } private ScrollableImagePreviewView.PreviewType getPreviewType(String mimeType) { |