summaryrefslogtreecommitdiff
path: root/core/java/android/widget/RemoteViews.java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-03-08 08:53:12 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-03-08 08:53:12 +0000
commitb6d634df79c2cc977cc2cc2a1070aa995b207709 (patch)
tree8033df8b19234d2567a5fc47818a05518eb119e1 /core/java/android/widget/RemoteViews.java
parent1fd211144b1430c2b892cc86469801cc9461e1a5 (diff)
parenta4f7b7b1d4301ee551c3fd24f8b479ba2f678990 (diff)
Merge "Add a way to set the View ID of the top-level view on a RemoteViews." into sc-dev
Diffstat (limited to 'core/java/android/widget/RemoteViews.java')
-rw-r--r--core/java/android/widget/RemoteViews.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index dfb2263a97a7..2328e589216b 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -358,6 +358,13 @@ public class RemoteViews implements Parcelable, Filter {
@ApplyFlags
private int mApplyFlags = 0;
+ /**
+ * Id to use to override the ID of the top-level view in this RemoteViews.
+ *
+ * Only used if this RemoteViews is defined from a XML layout value.
+ */
+ private int mViewId = View.NO_ID;
+
/** Class cookies of the Parcel this instance was read from. */
private Map<Class, Object> mClassCookies;
@@ -4799,6 +4806,9 @@ public class RemoteViews implements Parcelable, Filter {
inflater = inflater.cloneInContext(inflationContext);
inflater.setFilter(shouldUseStaticFilter() ? INFLATER_FILTER : this);
View v = inflater.inflate(rv.getLayoutId(), parent, false);
+ if (mViewId != View.NO_ID) {
+ v.setId(mViewId);
+ }
v.setTagInternal(R.id.widget_frame, rv.getLayoutId());
return v;
}
@@ -5746,4 +5756,25 @@ public class RemoteViews implements Parcelable, Filter {
}
return true;
}
+
+ /**
+ * Set the ID of the top-level view of the XML layout.
+ *
+ * Set to {@link View#NO_ID} to reset and simply keep the id defined in the XML layout.
+ *
+ * @throws UnsupportedOperationException if the method is called on a RemoteViews defined in
+ * term of other RemoteViews (e.g. {@link #RemoteViews(RemoteViews, RemoteViews)}).
+ */
+ public void setViewId(@IdRes int viewId) {
+ if (hasMultipleLayouts()) {
+ throw new UnsupportedOperationException(
+ "The viewId can only be set on RemoteViews defined from a XML layout.");
+ }
+ mViewId = viewId;
+ }
+
+ /** Get the ID of the top-level view of the XML layout, as set by {@link #setViewId}. */
+ public @IdRes int getViewId() {
+ return mViewId;
+ }
}