【发布时间】:2016-02-18 08:38:51
【问题描述】:
我的AppWidget 有几个非常相似的布局,实际上只是TextView 元素之一的旋转不同(我根据屏幕方向选择适当的布局)。
因此,与其多次重复相同的内容(我讨厌重复),我想我会尝试通过Re-using Layouts with <include/> 整理内容。
当我试图通过 ID 引用布局的特定元素时,问题就出现了。元素在包含的布局 xml 中的位置,对于 非-AppWidget 布局,我使用了描述为 here 的方法,其中使用了两层方法...
在“父”布局中:
<include layout="@layout/my_layout" android:id="@+id/textview_layout" />
在代码中:
TextView tv = (TextView)findViewById(R.id.textview_layout).findViewById(R.id.textview);
tv.setText("test");
...其中“子”布局中TextView 的ID 是textview。所以这是一个两阶段的方法,你首先引用包含你想要的TextView的View,然后引用TextView。
但是对于 AppWidgets,不是直接与TextView 打交道,你必须通过RemoteViews 来做所有事情。
所以而不是:
TextView textView = (TextView)findViewById(viewId);
textView.setText("text");
你必须这样做:
remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
鉴于RemoteViews 的接口是通过传入单个(直接)视图ID,您将如何引用包含文件中的元素?
【问题讨论】:
标签: android android-layout android-appwidget