2010-12-04 49 views
6

对于一个widget我用一个简单的布局,包含TableLayout为什么我的TableLayout不允许被夸大?

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TableRow > 
     (...) 
    </TableRow> 
</TableLayout> 

但当我想通过创建一个RemoteViews

RemoteViews eventElementLayout = new RemoteViews(this.getPackageName(), R.layout.widget_events_element); 

我得到一个异常告诉我,TableLayout是更新内容不允许被夸大。

12-04 01:36:12.548: WARN/AppWidgetHostView(195): updateAppWidget couldn't find any view, using error view 
12-04 01:36:12.548: WARN/AppWidgetHostView(195): android.view.InflateException: Binary XML file line #2: Error inflating class android.widget.TableLayout 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews.apply(RemoteViews.java:930) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews$ViewGroupAction.apply(RemoteViews.java:513) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews.performApply(RemoteViews.java:955) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.widget.RemoteViews.apply(RemoteViews.java:932) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:219) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:250) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:73) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.os.Looper.loop(Looper.java:123) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at dalvik.system.NativeStart.main(Native Method) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195): Caused by: android.view.InflateException: Binary XML file line #2: Class not allowed to be inflated android.widget.TableLayout 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.failNotAllowed(LayoutInflater.java:525) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  at android.view.LayoutInflater.createView(LayoutInflater.java:472) 
12-04 01:36:12.548: WARN/AppWidgetHostView(195):  ... 19 more 

为什么?

预先感谢

回答

20

应用窗口小部件只允许可以在其中被使用的布局和视图窗口小部件类型的有限列表。它看起来不支持TableLayout。从谷歌开发者documentation

一个RemoteViews对象(以及, 因此,应用程序的Widget)可以 支持以下布局类:

* FrameLayout 
* LinearLayout 
* RelativeLayout 

而下面的窗口小部件类:

* AnalogClock 
* Button 
* Chronometer 
* ImageButton 
* ImageView 
* ProgressBar 
* TextView 

不支持这些类的后代。

+0

谢谢,看来我错过了文档的这一部分! – tbruyelle 2010-12-04 14:37:25

相关问题