【发布时间】:2014-07-07 04:11:52
【问题描述】:
我想创建一个使用自定义字体来显示一段文本的主屏幕小部件。
现在,我使用绘制文本的方法是膨胀文本使用的布局,然后设置文本,最后将该布局转换为位图。代码如下:
//Leveraging view framework to built my text image
View v = LayoutInflater.from(context).inflate(R.layout.item_widget_text, null);
((TextView)v.findViewById(R.id.title)).setText(title);
((TextView)v.findViewById(R.id.subtitle)).setText(subtitle);
v.measure(MeasureSpec.makeMeasureSpec(1040, MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
v.layout(0, 0, v.getMeasuredWidth(),v.getMeasuredHeight());
//Creating the bitmap
final Bitmap returnedBitmap = Bitmap.createBitmap(v.getMeasuredWidth(),
v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(returnedBitmap);
v.draw(canvas);
为了为要绘制的布局创建位图,我需要知道小部件的大小,特别是小部件的宽度。
我的问题是我不知道如何获取小部件的大小。对于 android 4.1 及更高版本,我使用的是onAppWidgetOptionsChanged()。但是,我的应用程序支持 4.0 及更高版本。所以对于 4.1 以下的 android 版本,我无法正确调整布局大小,因此无法生成正确的位图。
有没有办法做到这一点?还是我刚才看到的更优雅/正确的方法?
我在 4.0 设备上看到了许多小部件,例如 Gmail 小部件。他们怎么能把他们的小部件画得这么漂亮?他们是使用自定义字体还是只是使用没有字体的标准文本视图?
【问题讨论】:
-
还没有看到任何答案。以为我会把它扔掉...stackoverflow.com/questions/14062651/…
-
@user3811037 感谢您的回答!但是,该帖子仅回答了设备 4.1+ 的大小问题。我的问题是低于 4.1 的设备。我正在寻找一种方法来获取小部件的大小,或者寻找一种更优雅的方式来实现我的目标(在可动态调整大小的小部件上使用自定义字体)。
标签: android android-layout widget android-widget android-appwidget