我的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");
…其中“child”布局中
TextView
的id是textview
。所以这是一个两阶段的方法,首先引用包含所需的View
的TextView
,然后引用TextView
。但是对于appwidgets,您必须通过
TextView
完成所有操作,而不是直接处理RemoteViews
。所以不是:
TextView textView = (TextView)findViewById(viewId);
textView.setText("text");
你必须:
remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
假设进入
RemoteViews
的接口是通过传递一个(直接)视图id来实现的,那么您将如何引用包含文件中的元素? 最佳答案
正如您所说的,您的视图仅随配置的更改而不同。假设您使用的是android studio,在gui设计工具中有一个名为go to next state的选项,通过使用这个选项,您可以生成layout land文件并根据需要对其进行配置,而且您不必更改id,因为android将决定使用哪个布局,所以您可以n使用相同的ID访问textView。如果要访问include标记中的任何视图。你可以用你给他们的身份证。我希望这对你有帮助。谢谢你