summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/res/drawable/chooser_action_button_bg.xml5
-rw-r--r--java/res/layout/chooser_action_view.xml10
-rw-r--r--java/res/values-h480dp/dimens.xml1
-rw-r--r--java/res/values/dimens.xml4
-rw-r--r--java/src/com/android/intentresolver/widget/ScrollableActionRow.kt45
5 files changed, 40 insertions, 25 deletions
diff --git a/java/res/drawable/chooser_action_button_bg.xml b/java/res/drawable/chooser_action_button_bg.xml
index b03c310e..300be831 100644
--- a/java/res/drawable/chooser_action_button_bg.xml
+++ b/java/res/drawable/chooser_action_button_bg.xml
@@ -24,9 +24,8 @@
android:insetRight="0dp"
android:insetBottom="8dp">
<shape android:shape="rectangle">
- <corners android:radius="8dp" />
- <stroke android:width="1dp"
- android:color="?androidprv:attr/materialColorPrimaryContainer"/>
+ <corners android:radius="@dimen/chooser_action_corner_radius" />
+ <solid android:color="?androidprv:attr/materialColorSurfaceContainerHigh"/>
</shape>
</inset>
</item>
diff --git a/java/res/layout/chooser_action_view.xml b/java/res/layout/chooser_action_view.xml
index 8bdcd15f..bb418ebd 100644
--- a/java/res/layout/chooser_action_view.xml
+++ b/java/res/layout/chooser_action_view.xml
@@ -17,14 +17,16 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
style="?android:attr/borderlessButtonStyle"
- android:paddingVertical="16dp"
+ android:background="@drawable/chooser_action_button_bg"
+ android:paddingVertical="6dp"
+ android:paddingHorizontal="8dp"
android:clickable="true"
- android:drawablePadding="8dp"
- android:drawableTint="?androidprv:attr/materialColorOnSurfaceVariant"
+ android:drawablePadding="6dp"
+ android:drawableTint="?androidprv:attr/materialColorOnSurface"
android:drawableTintMode="src_in"
android:ellipsize="end"
android:gravity="center"
- android:maxLines="2"
+ android:maxLines="1"
android:maxWidth="@dimen/chooser_action_max_width"
android:textColor="?androidprv:attr/materialColorOnSurface"
android:textSize="12sp" />
diff --git a/java/res/values-h480dp/dimens.xml b/java/res/values-h480dp/dimens.xml
index a9419eda..9e714943 100644
--- a/java/res/values-h480dp/dimens.xml
+++ b/java/res/values-h480dp/dimens.xml
@@ -23,7 +23,6 @@
<dimen name="chooser_preview_width">-1px</dimen>
<dimen name="chooser_view_spacing">18dp</dimen>
- <dimen name="chooser_action_max_width">100dp</dimen>
<dimen name="chooser_preview_image_height_tall">192dp</dimen>
<dimen name="grid_padding_top">10dp</dimen>
<dimen name="width_text_image_preview_size">56dp</dimen>
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 46ff75ed..69cc4984 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -17,6 +17,9 @@
<dimen name="resolver_max_width">480dp</dimen>
<!-- chooser/resolver (sharesheet) spacing -->
+ <dimen name="chooser_action_corner_radius">28dp</dimen>
+ <dimen name="chooser_action_horizontal_margin">2dp</dimen>
+ <dimen name="chooser_action_max_width">200dp</dimen>
<dimen name="chooser_width">412dp</dimen>
<dimen name="chooser_corner_radius">28dp</dimen>
<dimen name="chooser_corner_radius_small">14dp</dimen>
@@ -57,7 +60,6 @@
than 480dp, the values are set in values-h480dp/dimens.xml -->
<dimen name="chooser_preview_width">412dp</dimen>
<dimen name="chooser_view_spacing">8dp</dimen>
- <dimen name="chooser_action_max_width">140dp</dimen>
<dimen name="chooser_preview_image_height_tall">64dp</dimen>
<dimen name="grid_padding_top">6dp</dimen>
<dimen name="width_text_image_preview_size">46dp</dimen>
diff --git a/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt b/java/src/com/android/intentresolver/widget/ScrollableActionRow.kt
index 8fdb609e..3a79ef56 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.Rect
import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.LayoutInflater
@@ -31,19 +32,29 @@ class ScrollableActionRow : RecyclerView, ActionRow {
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(
- context: Context, attrs: AttributeSet?, defStyleAttr: Int
+ context: Context,
+ attrs: AttributeSet?,
+ defStyleAttr: Int
) : super(context, attrs, defStyleAttr) {
layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
adapter = Adapter(context)
- context.obtainStyledAttributes(
- attrs, R.styleable.ScrollableActionRow, defStyleAttr, 0
- ).use { a ->
- horizontalActions = a.getBoolean(R.styleable.ScrollableActionRow_horizontalActions, false)
- }
+ context
+ .obtainStyledAttributes(attrs, R.styleable.ScrollableActionRow, defStyleAttr, 0)
+ .use { a ->
+ horizontalActions =
+ a.getBoolean(R.styleable.ScrollableActionRow_horizontalActions, false)
+ }
+
+ addItemDecoration(
+ MarginDecoration(
+ context.resources.getDimensionPixelSize(R.dimen.chooser_action_horizontal_margin),
+ )
+ )
}
- private val actionsAdapter get() = adapter as Adapter
+ private val actionsAdapter
+ get() = adapter as Adapter
private val horizontalActions: Boolean
override fun setActions(actions: List<ActionRow.Action>) {
@@ -91,7 +102,8 @@ class ScrollableActionRow : RecyclerView, ActionRow {
}
private inner class ViewHolder(
- private val view: TextView, private val iconSize: Int,
+ private val view: TextView,
+ private val iconSize: Int,
) : RecyclerView.ViewHolder(view) {
fun bind(action: ActionRow.Action) {
@@ -100,16 +112,10 @@ class ScrollableActionRow : RecyclerView, ActionRow {
// some drawables (edit) does not gets tinted when set to the top of the text
// with TextView#setCompoundDrawableRelative
tintIcon(icon, view)
- if (horizontalActions) {
- view.setCompoundDrawablesRelative(icon, null, null, null)
- } else {
- view.setCompoundDrawablesRelative(null, icon, null, null)
- }
+ view.setCompoundDrawablesRelative(icon, null, null, null)
}
view.text = action.label ?: ""
- view.setOnClickListener {
- action.onClicked.run()
- }
+ view.setOnClickListener { action.onClicked.run() }
view.id = action.id
}
@@ -124,4 +130,11 @@ class ScrollableActionRow : RecyclerView, ActionRow {
view.compoundDrawableTintBlendMode?.let { drawable.setTintBlendMode(it) }
}
}
+
+ private class MarginDecoration(private val margin: Int) : RecyclerView.ItemDecoration() {
+ override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: State) {
+ outRect.left = margin
+ outRect.right = margin
+ }
+ }
}