我在for循环中以编程方式添加TextViews并将它们添加到ArrayList.
我该怎么用TextView.setId(int id)?我提出了什么整数ID,所以它不与其他ID冲突?
我有一个像:
<include
android:id="@+id/placeHolder"
layout="@layout/test" />
Run Code Online (Sandbox Code Playgroud)
include布局看起来像(test.xml):
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/outer"
... >
<ImageView
android:id="@+id/inner"
... />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我似乎无法在运行时找到id ="inner"的内部ImageView:
ImageView iv = (ImageView)findViewById(R.id.inner);
if (iv == null) {
Log.e(TAG, "Not found!");
}
Run Code Online (Sandbox Code Playgroud)
我应该能找到它吗?似乎因为它使用"include",正常的findViewById方法不起作用.
----------更新----------------
所以我可以找到分配给include的id:
View view = findViewById(R.id.placeHolder); // ok
Run Code Online (Sandbox Code Playgroud)
但我找不到任何一个像id的孩子:
view.findViewById(R.id.outer); // nope
view.findViewById(R.id.inner); // nope
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接搜索它们,就像原来一样:
findViewById(R.id.outer); // nope
findViewById(R.id.inner); // nope
Run Code Online (Sandbox Code Playgroud)
是不是只是在运行时剥离了元素?
谢谢
我有几个非常相似的布局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,您将如何引用包含文件中的元素?