繁体   English   中英

Android - 相同的不同ID包括布局

[英]Android - Different Ids for the same include Layout

我有一个布局,我必须多次包含。 它由TextViewImageView

<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,因为我多次包含相同的Layout。 有没有办法以编程方式包含布局并始终更改每个包含的布局的ID?

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

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);

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

对于每个textview

android:id="@+id/id_2"行中的id更改为其他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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM