如果你的目標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