使用 RemoteView 自动调整 Widget 中的文本大小
Posted
技术标签:
【中文标题】使用 RemoteView 自动调整 Widget 中的文本大小【英文标题】:Auto resize text in Widget using RemoteView 【发布时间】:2015-07-03 01:34:40 【问题描述】:我尝试使用this example here (AutoResizeTextView) 和this example here (FontFitTextView) 来调整小部件中文本的大小。
我有一个更新小部件的BroadcastReceiver
,在这个BroadcastReceiver
中我有以下内容。我构造了RemoteView
:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
ComponentName thisWidget = new ComponentName(mContext, Widget.class);
RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.widget);
然后我设置变量之一:
//convert to Fahrenheit if Fahrenheit selected
views.setTextViewText(R.id.wTemperature, convertTemperature(parts[4]) + "\u00B0");
我已将我的 widget.xml 相应地调整为:
<uk.co.diong.weatherlive_ish.FontFitTextView
android:layout_
android:layout_
android:textColor="#ffffff"
android:textSize="29sp"
android:textStyle="bold"
android:gravity="center"
android:text="Temp"
android:id="@+id/wTemperature" />
但我的小部件现在声明 问题加载小部件,所以现在我想知道几个小时后,这是否适用于 RemoteViews?这两个类都扩展了 TextView 而不是 RemoteView。
编辑: LogCat 里面有这个:
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.view.ViewGroup.onNestedScrollAccepted, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onNestedScrollAccepted
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 11389: Landroid/view/ViewGroup;.onNestedScrollAccepted (Landroid/view/View;Landroid/view/View;I)V
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.view.ViewGroup.onStopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onStopNestedScroll
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 11395: Landroid/view/ViewGroup;.onStopNestedScroll (Landroid/view/View;)V
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.view.ViewGroup.onWindowSystemUiVisibilityChanged, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.onWindowSystemUiVisibilityChanged
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 11397: Landroid/view/ViewGroup;.onWindowSystemUiVisibilityChanged (I)V
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0008
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.support.v7.internal.widget.ActionBarOverlayLayout.stopNestedScroll, referenced from method android.support.v7.internal.widget.ActionBarOverlayLayout.setHideOnContentScrollEnabled
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 9075: Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll ()V
04-22 17:38:13.213 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x000e
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.view.ViewGroup.onRtlPropertiesChanged, referenced from method android.support.v7.widget.Toolbar.onRtlPropertiesChanged
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 11392: Landroid/view/ViewGroup;.onRtlPropertiesChanged (I)V
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0007
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 387: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish W/dalvikvm﹕ VFY: unable to resolve virtual method 409: Landroid/content/res/TypedArray;.getType (I)I
04-22 17:38:13.223 14405-14405/uk.co.diong.weatherlive_ish D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0002
【问题讨论】:
你试过了吗? Logcat 中的任何内容? 是的,我已经尝试过了,我已经编辑了上面的内容并包含了 LogCat。 【参考方案1】:您无法在RemoteView
中加载自定义视图。
Android Doc 说,Widget 中只能加载少数 Layouts 和 Views。恐怕无法调整大小。
【讨论】:
【参考方案2】:我不知道下面的答案是否正确,但请尝试一下
问题可能是由 com.android.support:appcompat-v7:21.0.3 引起的,这是使用 Android 的新布局功能所需的主要依赖项。尝试回到 v7:20.0.0,这应该可以解决问题。
从这里找到
https://***.com/a/27989207/3728591
【讨论】:
我确实更改了 build.gradle 并且所发生的只是带有这些错误的 logcat 已经消失,但是我得到了相同的结果 Problem Loading Widget 我已经尝试了 4 个小时,这让我很沮丧。 检查下面的链接并在那里尝试一些建议的解决方案。 link 我在onEnabled
中创建了一个带有 Widget Loaded 的日志,并且我的 widget.java 似乎运行良好,就像在 onEnabled
中的日志 Widget Loaded 实际上显示在 LogCat 中并且没有其他消息,并且我在 LogCat 中处于详细模式。我还在onUpdated
中创建了一个日志,其中指出在小部件中输入了onUpdate以上是关于使用 RemoteView 自动调整 Widget 中的文本大小的主要内容,如果未能解决你的问题,请参考以下文章
使用 RemoteView 删除 Widget 中以编程方式生成的布局
iOS 8 Today Widget 使用自动布局来适应 UITableView 的高度
基于内容自动调整Ext JS Window,最大可达maxHeight