【问题标题】:Android home screen widget textsize dynamicallyAndroid 主屏幕小部件 textsize 动态
【发布时间】:2014-03-05 12:37:18
【问题描述】:
【问题讨论】:
标签:
android
android-widget
android-remoteview
【解决方案1】:
如果您的目标是 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设置计算大小
注意:这个方法我没有实现,只是想了一下。
尽量不要在每次更新时都这样做,缓存结果(即使在首选项中),小部件选项不应经常更改。