summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/res/layout/chooser_action_row.xml21
-rw-r--r--java/res/layout/chooser_grid_preview_file.xml13
-rw-r--r--java/res/layout/chooser_grid_preview_image.xml12
-rw-r--r--java/res/layout/chooser_grid_preview_text.xml12
-rw-r--r--java/res/layout/scrollable_chooser_action_row.xml30
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java1
-rw-r--r--java/src/com/android/intentresolver/ChooserContentPreviewUi.java39
-rw-r--r--java/src/com/android/intentresolver/widget/ScrollableActionRow.kt10
8 files changed, 96 insertions, 42 deletions
diff --git a/java/res/layout/chooser_action_row.xml b/java/res/layout/chooser_action_row.xml
index a6b1e813..620ff704 100644
--- a/java/res/layout/chooser_action_row.xml
+++ b/java/res/layout/chooser_action_row.xml
@@ -13,11 +13,20 @@
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
-
-<com.android.intentresolver.widget.ChooserActionRow
+<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="@dimen/chooser_edge_margin_normal"
- android:paddingRight="@dimen/chooser_edge_margin_normal"
- android:gravity="center" />
+ android:layout_height="wrap_content">
+
+ <com.android.intentresolver.widget.ChooserActionRow
+ android:id="@androidprv:id/chooser_action_row"
+ android:layout_width="@dimen/chooser_preview_width"
+ android:layout_height="wrap_content"
+ android:paddingLeft="@dimen/chooser_edge_margin_normal"
+ android:paddingRight="@dimen/chooser_edge_margin_normal"
+ android:layout_marginBottom="@dimen/chooser_view_spacing"
+ android:layout_gravity="center_horizontal"
+ android:gravity="center" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/java/res/layout/chooser_grid_preview_file.xml b/java/res/layout/chooser_grid_preview_file.xml
index c3392704..e98c3273 100644
--- a/java/res/layout/chooser_grid_preview_file.xml
+++ b/java/res/layout/chooser_grid_preview_file.xml
@@ -68,13 +68,10 @@
android:singleLine="true"/>
</LinearLayout>
- <include
- android:id="@androidprv:id/chooser_action_row"
- layout="@layout/chooser_action_row"
- android:layout_width="@dimen/chooser_preview_width"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/chooser_view_spacing"
- android:layout_gravity="center"
- />
+ <ViewStub
+ android:id="@+id/action_row_stub"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+
</LinearLayout>
diff --git a/java/res/layout/chooser_grid_preview_image.xml b/java/res/layout/chooser_grid_preview_image.xml
index 4d15bf75..9d1dc208 100644
--- a/java/res/layout/chooser_grid_preview_image.xml
+++ b/java/res/layout/chooser_grid_preview_image.xml
@@ -80,14 +80,10 @@
</RelativeLayout>
- <include
- android:id="@androidprv:id/chooser_action_row"
- layout="@layout/chooser_action_row"
- android:layout_width="@dimen/chooser_preview_width"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/chooser_view_spacing"
- android:layout_gravity="center"
- />
+ <ViewStub
+ android:id="@+id/action_row_stub"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
</LinearLayout>
diff --git a/java/res/layout/chooser_grid_preview_text.xml b/java/res/layout/chooser_grid_preview_text.xml
index 81fdbd08..db7282e3 100644
--- a/java/res/layout/chooser_grid_preview_text.xml
+++ b/java/res/layout/chooser_grid_preview_text.xml
@@ -52,14 +52,10 @@
</RelativeLayout>
- <include
- android:id="@androidprv:id/chooser_action_row"
- layout="@layout/chooser_action_row"
- android:layout_width="@dimen/chooser_preview_width"
- android:layout_height="wrap_content"
- android:layout_marginBottom="@dimen/chooser_view_spacing"
- android:layout_gravity="center"
- />
+ <ViewStub
+ android:id="@+id/action_row_stub"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
<!-- Required sub-layout so we can get the nice rounded corners-->
<!-- around this section -->
diff --git a/java/res/layout/scrollable_chooser_action_row.xml b/java/res/layout/scrollable_chooser_action_row.xml
new file mode 100644
index 00000000..cb5dabf0
--- /dev/null
+++ b/java/res/layout/scrollable_chooser_action_row.xml
@@ -0,0 +1,30 @@
+<!--
+ ~ Copyright (C) 2019 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
+ -->
+
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal">
+
+ <com.android.intentresolver.widget.ScrollableActionRow
+ android:id="@androidprv:id/chooser_action_row"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:gravity="center" />
+</FrameLayout>
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index c7470ab2..83cdc9ef 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -776,6 +776,7 @@ public class ChooserActivity extends ResolverActivity implements
getResources(),
getLayoutInflater(),
actionFactory,
+ R.layout.chooser_action_row,
parent,
previewCoordinator,
getContentResolver(),
diff --git a/java/src/com/android/intentresolver/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/ChooserContentPreviewUi.java
index f9f4ee98..0cadce4b 100644
--- a/java/src/com/android/intentresolver/ChooserContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/ChooserContentPreviewUi.java
@@ -34,9 +34,11 @@ import android.util.PluralsMessageFormatter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewStub;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.LayoutRes;
import androidx.annotation.Nullable;
import com.android.intentresolver.widget.ActionRow;
@@ -177,6 +179,7 @@ public final class ChooserContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ActionFactory actionFactory,
+ @LayoutRes int actionRowLayout,
ViewGroup parent,
ContentPreviewCoordinator previewCoord,
ContentResolver contentResolver,
@@ -190,7 +193,8 @@ public final class ChooserContentPreviewUi {
layoutInflater,
createTextPreviewActions(actionFactory),
parent,
- previewCoord);
+ previewCoord,
+ actionRowLayout);
break;
case CONTENT_PREVIEW_IMAGE:
layout = displayImageContentPreview(
@@ -200,7 +204,8 @@ public final class ChooserContentPreviewUi {
parent,
previewCoord,
contentResolver,
- imageClassifier);
+ imageClassifier,
+ actionRowLayout);
break;
case CONTENT_PREVIEW_FILE:
layout = displayFileContentPreview(
@@ -210,7 +215,8 @@ public final class ChooserContentPreviewUi {
createFilePreviewActions(actionFactory),
parent,
previewCoord,
- contentResolver);
+ contentResolver,
+ actionRowLayout);
break;
default:
Log.e(TAG, "Unexpected content preview type: " + previewType);
@@ -239,12 +245,12 @@ public final class ChooserContentPreviewUi {
LayoutInflater layoutInflater,
List<ActionRow.Action> actions,
ViewGroup parent,
- ContentPreviewCoordinator previewCoord) {
+ ContentPreviewCoordinator previewCoord,
+ @LayoutRes int actionRowLayout) {
ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_text, parent, false);
- final ActionRow actionRow =
- contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row);
+ final ActionRow actionRow = inflateActionRow(contentPreviewLayout, actionRowLayout);
if (actionRow != null) {
actionRow.setActions(actions);
}
@@ -312,14 +318,14 @@ public final class ChooserContentPreviewUi {
ViewGroup parent,
ContentPreviewCoordinator previewCoord,
ContentResolver contentResolver,
- ImageMimeTypeClassifier imageClassifier) {
+ ImageMimeTypeClassifier imageClassifier,
+ @LayoutRes int actionRowLayout) {
ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_image, parent, false);
ViewGroup imagePreview = contentPreviewLayout.findViewById(
com.android.internal.R.id.content_preview_image_area);
- final ActionRow actionRow =
- contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row);
+ final ActionRow actionRow = inflateActionRow(contentPreviewLayout, actionRowLayout);
if (actionRow != null) {
actionRow.setActions(actions);
}
@@ -403,12 +409,12 @@ public final class ChooserContentPreviewUi {
List<ActionRow.Action> actions,
ViewGroup parent,
ContentPreviewCoordinator previewCoord,
- ContentResolver contentResolver) {
+ ContentResolver contentResolver,
+ @LayoutRes int actionRowLayout) {
ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_file, parent, false);
- final ActionRow actionRow =
- contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row);
+ final ActionRow actionRow = inflateActionRow(contentPreviewLayout, actionRowLayout);
if (actionRow != null) {
actionRow.setActions(actions);
}
@@ -468,6 +474,15 @@ public final class ChooserContentPreviewUi {
return actions;
}
+ private static ActionRow inflateActionRow(ViewGroup parent, @LayoutRes int actionRowLayout) {
+ final ViewStub stub = parent.findViewById(com.android.intentresolver.R.id.action_row_stub);
+ if (stub != null) {
+ stub.setLayoutResource(actionRowLayout);
+ stub.inflate();
+ }
+ return parent.findViewById(com.android.internal.R.id.chooser_action_row);
+ }
+
private static void logContentPreviewWarning(Uri uri) {
// The ContentResolver already logs the exception. Log something more informative.
Log.w(TAG, "Could not load (" + uri.toString() + ") thumbnail/name for preview. If "
diff --git a/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt b/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt
index f3a34985..a941b97a 100644
--- a/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt
+++ b/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt
@@ -17,6 +17,7 @@
package com.android.intentresolver.widget
import android.content.Context
+import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
@@ -104,6 +105,8 @@ class ScrollableActionRow : RecyclerView, ActionRow {
fun bind(action: ActionRow.Action) {
if (action.icon != null) {
action.icon.setBounds(0, 0, iconSize, iconSize)
+ // some drawables (edit) does not gets tinted when set to the top of the text
+ // with TextView#setCompoundDrawableRelative
view.setCompoundDrawablesRelative(null, action.icon, null, null)
}
view.text = action.label ?: ""
@@ -116,5 +119,12 @@ class ScrollableActionRow : RecyclerView, ActionRow {
fun unbind() {
view.setOnClickListener(null)
}
+
+ private fun tintIcon(drawable: Drawable, view: TextView) {
+ val tintList = view.compoundDrawableTintList ?: return
+ drawable.setTintList(tintList)
+ view.compoundDrawableTintMode?.let { drawable.setTintMode(it) }
+ view.compoundDrawableTintBlendMode?.let { drawable.setTintBlendMode(it) }
+ }
}
}