首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓:自定义视图不起作用的AppWidget

安卓:自定义视图不起作用的AppWidget
EN

Stack Overflow用户
提问于 2010-10-31 17:27:59
回答 3查看 16.2K关注 0票数 18

我正在创建一个appwidget,它由一个名为Foo的自定义视图组成。

xml/widget.xml:

代码语言:javascript
复制
<appwidget-provider
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:minWidth="294dp"
 android:minHeight="72dp"
 android:updatePeriodMillis="0"
 android:initialLayout="@layout/widget_layout">
</appwidget-provider>

布局/小部件_布局

代码语言:javascript
复制
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
 <package.name.Foo
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 />
</LinearLayout>

Foo:

代码语言:javascript
复制
  public class Foo extends View 
  {..}

我在一个普通的安卓应用程序中测试了Foo视图,它工作得很好。然而,当我尝试运行这个小部件时,我得到了"error while loading widget"。当我从小部件中删除Foo视图时,一切正常。所以它与Foo视图有关。

不幸的是,我不能在DDMS中得到任何更具体的错误,因为我不知道一种调试小部件的方法。

我想知道是否真的可以在app-widget中使用您自己的自定义视图?我是不是做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-10 04:48:07

我基本上保持了自定义视图不变,并为小部件实现了一个ImageView,然后使用getDrawingCache()

代码语言:javascript
复制
MyView myView = new MyView(context);
myView.measure(150,150);
myView.layout(0,0,150,150);
myView.setDrawingCacheEnabled(true);
Bitmap bitmap=myView.getDrawingCache();
remoteViews.setImageViewBitmap(R.id.dial, bitmap);
票数 48
EN

Stack Overflow用户

发布于 2012-08-16 04:52:33

不使用getDrawingCache()的另一种方法是:

代码语言:javascript
复制
MyView myView = new MyView(this);
myView.measure(500, 500);
myView.layout(0, 0, 500, 500);
Bitmap bitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
myView.draw(new Canvas(bitmap));
remoteViews.setImageViewBitmap(R.id.imageView, bitmap);

我使用缓存没有重画所有的视图,所以我不能使用上面的代码。我觉得它更优雅。我希望它能对某些人有用。

票数 14
EN

Stack Overflow用户

发布于 2010-10-31 17:52:09

请参阅documentation

支持的视图有AnalogClock、按钮、天文、ImageButton、ImageView、ProgressBar和TextView。对于布局,你必须使用FrameLayout、LinearLayout或RelativeLayout。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4062559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档