gpt4 book ai didi

android - 在 AppWidget 的情况下重用布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:49 24 4
gpt4 key购买 nike

我的 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 .所以这是一个两阶段的方法,你首先引用 View包含 TextView你想要的,然后你引用 TextView关闭那个。

但是对于AppWidgets,而不是直接处理TextView ,你必须通过 RemoteViews 来做所有事情.

所以代替:

TextView textView = (TextView)findViewById(viewId);
textView.setText("text");

你必须这样做:

remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);

鉴于接口(interface)进入了RemoteViews是通过传入单个(直接) View ID 的方式,您将如何引用包含文件中的元素?

最佳答案

正如您所说,您的观点仅在配置发生变化时有所不同。假设您正在使用 Android Studio,在 GUI Designing Tool 中有一个名为 Go to next State 的选项,通过使用它您可以生成 layout-land 文件并像您一样配置它想要它,而且您不必更改 id,因为 android 将决定它将使用哪种布局,因此您可以使用相同的 id 访问您的 TextView。如果您想访问 include 标记中的任何 View 。您可以只使用您提供给他们的 ID。我希望这是有帮助的。谢谢

关于android - 在 AppWidget 的情况下重用布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35476474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com