如果你的目标API级别16或以上,你可以尝试以下方法:
可悲的是整个事情取决于知道小部件的大小,这是唯一可能在API 16+。
- 重写AppWidgetProvider.onAppWidgetOptionsChanged回调
或通过AppWidgetManager.getAppWidgetOptions
- 后得到相同的包中提取控件的大小:
options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH)
options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT)
- 从窗口小部件的尺寸演绎您的
TextView
的宽度
(最好的,如果你有它match_parent
到窗口小部件的根源,头脑利润率/填充)
- 如果你有复杂的布局则可以选择
- 抬高整个部件在你的应用空间
widget = LayoutInflater.from(context).inflate(R.layout.widget, null)
- 模拟基于the framework布局:
widget.measure(MeasureSpec.makeMeasureSpec(widgetWidth, MeasureSpec.EXACTLY), ...)
。
- 让您
TextView
的大小:widget.findViewById(R.id.myText).getMeasuredWidth()
- 使用类似
refitText
here通过RemoteViews.setTextViewTextSize
注意找到自己的最佳规模
组算出的尺寸:我并没有实现这个方法,只是想到了它。 尽量不要在每次更新时进行此操作,缓存结果(即使在首选项中),小部件选项也不应经常更改。
这可能是一个解决办法: http://stackoverflow.com/questions/6721616/how-can-i-to-change-text-size-in-remoteviews – radley