drm*_*wer 6 android android-layout android-appwidget
我有几个非常相似的布局AppWidget
,实际上只有一个TextView
元素的旋转不同(我根据屏幕方向选择合适的布局).
所以,不要多次重复相同的东西(我讨厌重复),我想我会通过重新使用布局来<include/>
尝试整理一些东西.
当我试图通过ID引用布局的特定元素时,问题出现了.如果元素在包含的布局xml中,对于非 -AppWidget布局,我使用了这里描述的方法,其中使用了两层方法...
在"父"布局中:
<include layout="@layout/my_layout" android:id="@+id/textview_layout" />
Run Code Online (Sandbox Code Playgroud)
在代码中:
TextView tv = (TextView)findViewById(R.id.textview_layout).findViewById(R.id.textview);
tv.setText("test");
Run Code Online (Sandbox Code Playgroud)
... TextView
"子"布局中的ID的位置textview
.所以这是一个两阶段的方法,你首先引用View
包含TextView
你想要的东西,然后引用TextView
它.
但是对于AppWidgets而言,不是直接与之交易,而是TextView
必须通过一切来做RemoteViews
.
所以代替:
TextView textView = (TextView)findViewById(viewId);
textView.setText("text");
Run Code Online (Sandbox Code Playgroud)
你必须这样做:
remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
Run Code Online (Sandbox Code Playgroud)
鉴于进入的接口RemoteViews
是通过传递单个(直接)视图ID,您将如何引用包含文件中的元素?
Sum*_*ois -1
正如您所说,您的观点仅随着配置的更改而有所不同。假设你正在使用Android Studio,在GUI设计工具中有一个名为Go to next State的选项,通过使用它你可以生成layout-land文件并按照你想要的方式配置它,而且你也不必像android那样更改id决定将使用哪种布局,以便您可以使用相同的 id 访问您的 TextView。如果您想访问包含标签中的任何视图。你可以只使用你给他们的ID。我希望这是有帮助的。谢谢