diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2021-03-08 08:53:12 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-03-08 08:53:12 +0000 |
| commit | b6d634df79c2cc977cc2cc2a1070aa995b207709 (patch) | |
| tree | 8033df8b19234d2567a5fc47818a05518eb119e1 /core/java/android/widget/RemoteViews.java | |
| parent | 1fd211144b1430c2b892cc86469801cc9461e1a5 (diff) | |
| parent | a4f7b7b1d4301ee551c3fd24f8b479ba2f678990 (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.java | 31 |
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; + } } |
