2010-12-04 52 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

相關問題