在AppWidget的情况下重用布局

时间:2016-02-18 08:38:51

标签: android android-layout android-appwidget

我的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,您将如何引用包含文件中的元素?

1 个答案:

答案 0 :(得分:0)

正如您所说,您的观点仅因配置更改而有所不同。假设您正在使用Android Studio,在GUI设计工具中有一个名为转到下一个状态的选项,通过使用此选项,您可以生成 layout-land 文件并进行配置它就像你想要它一样,而且你也没有改变id,因为android会决定它将使用哪个布局,所以你可以访问具有相同id的TextView。如果要访问包含标记中的任何View。你可以使用你给他们的id。我希望这是有帮助的。 THANKYOU