2011-12-23 25 views
1

我正在使用示例WeatherListWidget的修改版本以更好地理解App小部件。事情很好 - 除非我嘗試用稍微複雜的佈局文件替換dark_widget_item和light_widget_item佈局文件。這裏是原始佈局:應用小部件中的LinearLayout

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/widget_item" 
android:layout_width="match_parent" 
android:layout_height="46dp" 
android:paddingLeft="25dp" 
android:gravity="center_vertical" 
android:background="@drawable/item_bg_light" 
android:textColor="#e5e5e1" 
android:textSize="24sp" /> 

我希望能夠有多個文本行。但是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/widget_item" 
android:background="@drawable/item_bg" 
android:layout_width="match_parent" 
android:layout_height="46dp" 
android:paddingLeft="25dp"> 
<TextView android:id="@+id/type_string" 
    android:textColor="#666666" 
    android:textSize="20sp" /> 
<TextView android:id="@+id/title_string" 
    android:textColor="#666666" 
    android:textSize="18sp" /> 
</LinearLayout> 

失敗。

事實上,它導致「對不起!應用程序啓動器(process com.android.launcher)意外停止,請重試。強制關閉」。

恢復TextView widget_item.xml修復了這個問題。我懷疑問題的一部分是我如何引用WeatherWidgetService.getViewAt()中的RemoteViews - 但我從DDMS或LogCat或其他任何東西獲得的幫助很少。

+2

我沒有看到任何'layout_width'和'layout_height'屬性爲你的LinearLayout中的兩個TextViews - 它們是強制性的。另外,如果您希望兩個TextView都在另一個之上,則可以在LinearLayout中添加android:orientation =「vertical」。只需要記錄,通過在不同元素之間添加「\ n」,可以在單個TextView中將CharSequence分解爲多行。 – 2011-12-23 22:59:02

+0

@MH:謝謝!實際上,我也想包含一個圖片,所以我認爲LinearLayout比CharSequence更好。 – westsider 2011-12-23 23:23:15

+0

@MH:如果您將您的評論轉貼爲答案,我會標記爲答案。 – westsider 2011-12-23 23:23:51

回答

1

謝謝你們,我收到了通知。 (SO需要與length > 2一個用戶名,因此點)

答案根據註釋: 我看不出有任何layout_widthlayout_height屬性都爲你的LinearLayout的TextViews的 - 他們是強制性的。另外,如果您希望兩個TextView都高於其他值,請將android:orientation="vertical"添加到LinearLayout。只需要記錄,通過在不同元素之間添加「\ n」,可以在單個TextView中將CharSequence分解爲多行。

如果您打算添加圖片,那麼您可能最好使用LinearLayout而不是單個TextView,儘管您可能會使用後者的內部可繪製選項。這可能會有點混亂,尤其是如果你打算爲不同的文本行使用不同的樣式......不是不可能的,但我會堅持使用LinearLayout。 ;)