diff options
| author | Daniel Sandler <dsandler@android.com> | 2012-05-21 14:48:23 -0400 |
|---|---|---|
| committer | Daniel Sandler <dsandler@android.com> | 2012-05-21 14:51:51 -0400 |
| commit | 7264f71399018e2dd79d974ee5162cf652ac786f (patch) | |
| tree | c1d27e21b7adf330418da9e9df727ebddc101feb /core/java/android/widget/RemoteViews.java | |
| parent | d7ba81437020b45f8f33fef729820078b1cd2547 (diff) | |
Remotable view method for TextView.setTextSize(int, float).
The only remotable method on TextView is setTextSize(float)
which assumes "sp" dimensions, making it tricky to get exact
text sizes.
Bug: 6519374
Change-Id: I961bbdd607ca6786c0630ff1ce19186f54f6f31f
Diffstat (limited to 'core/java/android/widget/RemoteViews.java')
| -rw-r--r-- | core/java/android/widget/RemoteViews.java | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 51c957a8e26b..529a09a467b1 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -37,6 +37,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; +import android.util.TypedValue; import android.view.LayoutInflater; import android.view.LayoutInflater.Filter; import android.view.RemotableViewMethod; @@ -1182,6 +1183,45 @@ public class RemoteViews implements Parcelable, Filter { } /** + * Helper action to set compound drawables on a TextView. Supports relative + * (s/t/e/b) or cardinal (l/t/r/b) arrangement. + */ + private class TextViewSizeAction extends Action { + public TextViewSizeAction(int viewId, int units, float size) { + this.viewId = viewId; + this.units = units; + this.size = size; + } + + public TextViewSizeAction(Parcel parcel) { + viewId = parcel.readInt(); + units = parcel.readInt(); + size = parcel.readFloat(); + } + + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(TAG); + dest.writeInt(viewId); + dest.writeInt(units); + dest.writeFloat(size); + } + + @Override + public void apply(View root, ViewGroup rootParent) { + final Context context = root.getContext(); + final TextView target = (TextView) root.findViewById(viewId); + if (target == null) return; + target.setTextSize(units, size); + } + + int viewId; + int units; + float size; + + public final static int TAG = 13; + } + + /** * Simple class used to keep track of memory usage in a RemoteViews. * */ @@ -1334,6 +1374,9 @@ public class RemoteViews implements Parcelable, Filter { case TextViewDrawableAction.TAG: mActions.add(new TextViewDrawableAction(parcel)); break; + case TextViewSizeAction.TAG: + mActions.add(new TextViewSizeAction(parcel)); + break; case BitmapReflectionAction.TAG: mActions.add(new BitmapReflectionAction(parcel)); break; @@ -1541,7 +1584,19 @@ public class RemoteViews implements Parcelable, Filter { public void setTextViewText(int viewId, CharSequence text) { setCharSequence(viewId, "setText", text); } - + + /** + * @hide + * Equivalent to calling {@link TextView#setTextSize(int, float)} + * + * @param viewId The id of the view whose text size should change + * @param units The units of size (e.g. COMPLEX_UNIT_SP) + * @param size The size of the text + */ + public void setTextViewTextSize(int viewId, int units, float size) { + addAction(new TextViewSizeAction(viewId, units, size)); + } + /** * Equivalent to calling * {@link TextView#setCompoundDrawablesWithIntrinsicBounds(int, int, int, int)}. |
