5

我有一个布局,我必须包含几次。它由 aTextView和 a组成ImageView

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="40dp"
    android:background="@drawable/back2"
    android:id="@+id/id_1"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/id_2"
    android:textSize="15dp"
    android:typeface="sans"
    android:textColor="#ffffff" />

现在我想以编程方式设置文本,但我面临的问题是,TextView现在总是具有相同的 Id,因为我多次包含相同的布局。有没有办法以编程方式包含布局并始终更改每个包含布局的 Id?

4

5 回答 5

8

我要做的是,当您需要访问包含布局的特定实例上的视图时:

ViewGroup instance = (ViewGroup) findViewById(R.id.included1); // Replace ViewGroup with whatever your particlar type is
ImageView iView = (ImageView) instance.findViewById(R.id.id_1);
TextView tView = (TextView) instance.findViewById(R.id.id_2);
于 2012-06-29T16:08:48.047 回答
2

您可以动态创建 TextView,然后用于TextView.setId(int id)设置该视图的 id,以便以后可以使用新 id 调用它。

于 2012-06-29T16:08:26.363 回答
1

对于每个文本视图

将行中的 id 更改android:id="@+id/id_2" 为不同的 id。

例如:

android:id="@+id/id_4"

要以编程方式添加它们,您可以这样做:

            TextView Label3 = new TextView(this);
            Label3.setId(300);
            Label3.setTextAppearance(this, android.R.attr.textAppearanceMedium);
            Label3.setLayoutParams(labelParams);
            Label3.setText("My textViewCaption:");
            ll3.addView(Label3);

如果您将 Label3 设置为全局变量,您可以通过以下方式访问它来更改它setText

以编程方式,您可以循环遍历它并在循环时设置 Id

于 2012-06-29T16:10:07.997 回答
1

您可以使用它来更改您的 TextView id
TextView textview = new TextView(this); textview.setId(int id);

于 2012-06-29T16:30:17.163 回答
0

据我所知,没有办法做到这一点。<include>如果您希望 XML 布局中的 id 是唯一的,则必须创建不使用 using的布局。

于 2012-06-29T16:06:24.433 回答