我的AppWidget
有几个非常相似的布局,实际上只有一个TextView
元素的旋转不同(我根据屏幕方向选择合适的布局)。
所以不要多次重复同样的事情(我讨厌重复),我想我会尝试通过Re-using Layouts with <include/>
整理一下。
当我尝试通过ID引用布局的特定元素时,问题就出现了。如果元素位于包含的布局xml中,对于非 -AppWidget布局,我使用了here描述的方法,其中使用了两层方法...
在&#34;父母&#34;布局:
<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");
...&#34; child&#34;中TextView
的ID布局为textview
。因此,这是一个两阶段的方法,您首先引用包含所需View
的{{1}},然后引用该TextView
。
但是对于AppWidgets,您不必直接处理TextView
,而是必须通过RemoteViews
执行所有操作。
所以而不是:
TextView
你必须这样做:
TextView textView = (TextView)findViewById(viewId);
textView.setText("text");
鉴于进入remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
的接口是通过传递单个(直接)视图ID,您将如何引用包含文件中的元素?
答案 0 :(得分:0)
正如您所说,您的观点仅因配置更改而有所不同。假设您正在使用Android Studio,在GUI设计工具中有一个名为转到下一个状态的选项,通过使用此选项,您可以生成 layout-land 文件并进行配置它就像你想要它一样,而且你也没有改变id,因为android会决定它将使用哪个布局,所以你可以访问具有相同id的TextView。如果要访问包含标记中的任何View。你可以使用你给他们的id。我希望这是有帮助的。 THANKYOU