设置ID后ImageView消失
Posted
技术标签:
【中文标题】设置ID后ImageView消失【英文标题】:ImageView dissapearing after setting an ID 【发布时间】:2014-02-18 05:20:04 【问题描述】:我在 for 循环内以编程方式将视图添加到我的布局中。
我添加的布局的xml文件是这样的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout_consulta_item_list"
android:layout_
android:layout_ >
<ImageView
android:id="@+id/imageView_consulta_action"
android:layout_
android:layout_
android:layout_alignBottom="@+id/LinearLayout_dados_consulta"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/LinearLayout_dados_consulta"
android:layout_centerHorizontal="true"
android:layout_centerInParent="false"
android:adjustViewBounds="true"
android:maxWidth="70dp"
android:padding="10dp"
android:scaleType="centerInside"
android:src="@drawable/estrela_off" />
<LinearLayout
android:id="@+id/LinearLayout_dados_consulta"
android:layout_
android:layout_
android:layout_margin="2dp"
android:layout_toLeftOf="@+id/imageView_consulta_action"
android:background="#660000"
android:orientation="vertical" >
<LinearLayout
android:layout_
android:layout_
android:layout_gravity="center"
android:gravity="center" >
<TextView
android:id="@+id/textView1"
android:layout_
android:layout_
android:layout_gravity="top"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:text="@string/origem"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#ffaaaa"
android:textSize="10sp" />
<TextView
android:id="@+id/textView_origem"
android:layout_
android:layout_
android:text="YYY"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#eeeeee" />
<TextView
android:id="@+id/textView5"
android:layout_
android:layout_
android:layout_gravity="top"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:text="@string/data_ida"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#ffaaaa"
android:textSize="10sp" />
<TextView
android:id="@+id/textView_data_ida"
android:layout_
android:layout_
android:text="2014-05-05"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#eeeeee"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
在我的 main_activity 中,我调用了构造函数:
for (int i=0;i<resultList.length-1;i++)
RelativeLayout viewToLoad = (RelativeLayout)LayoutInflater.from(this).inflate(R.layout.consulta_item, null);
ll.addView(viewToLoad);
ImageView ImgConsulta_action = (ImageView)findViewById(R.id.imageView_consulta_action);
LinearLayout dados_consulta = (LinearLayout)findViewById(R.id.LinearLayout_dados_consulta);
dados_consulta.setOnLongClickListener(...);
ImgConsulta_action.setOnLongClickListener(...);
好吧,我一直在为布局中的所有视图设置 SetText 等等。
但是,为了使 setOnClickListener 对每个视图都有效,我必须在 for 循环内为视图设置一个 id:
dados_consulta.setId(4000+i);
ImgConsulta_action.setId(5000+i); //(*lastline)
奇怪的事情发生了:
如果我评论最后一行,则布局正确插入,图像视图显示星号,因为它应该这样做,并且“dados_consulta”处的侦听器工作正常。
但如果我删除最后一行的注释,星星就会从屏幕上消失。
谁能帮我理解发生了什么?
【问题讨论】:
您的代码中是否还有其他地方使用此行:ImageView ImgConsulta_action = (ImageView)findViewById(R.id.imageView_consulta_action);
??
请张贴带有导致问题的代码 sn-p 的代码部分。
@Merlevede 不,这是唯一的地方。我调用 ImgConsulta_action 的其他行是设置标记、onClickListener、setImageResource 和 setId。顺便说一句,这是导致问题的代码的和平
@HamidShatu 我确实发布了使图像视图消失的行。 (至少,我相信这是这条线,因为如果我删除它,图像就会出现!)我不明白为什么这个问题不清楚。添加 setOnClickListener 调用打开 AlertDialog 的 void 可能很有用。但我不认为这有什么区别......
【参考方案1】:
我有一个布局参数引用了原始视图中布局元素的 ID。 由于我必须在多次将此布局添加到我的活动中时动态更改 ID,因此我还需要将 layoutparams 重置为新的 ID。 所以,我添加了以下几行:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)ImgConsulta_action.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_TOP, dados_consulta.getId());
params.addRule(RelativeLayout.ALIGN_BOTTOM, dados_consulta.getId());
ImgConsulta_action.setLayoutParams(params);
RelativeLayout.LayoutParams paramsDadosConsulta = (RelativeLayout.LayoutParams)dados_consulta.getLayoutParams();
paramsDadosConsulta.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
paramsDadosConsulta.addRule(RelativeLayout.LEFT_OF, ImgConsulta_action.getId());
dados_consulta.setLayoutParams(paramsDadosConsulta);
现在它运行良好。
请注意,问题不在于布局消失,而在于布局在另一个布局之前。 (使另一个不可见)
【讨论】:
以上是关于设置ID后ImageView消失的主要内容,如果未能解决你的问题,请参考以下文章
android的imageview的imageResource,的属性设置好以后怎么获取?
AFNetworking用URL设置UITableViewCell的imageView图片,设置图片后imageview frame还是0