[英]Android - Different Ids for the same include Layout
我有一个布局,我必须多次包含。 它由TextView
和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,因为我多次包含相同的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.