我必须使用Java动态创建布局。
我已经动态创建了9个线性布局,如下所示:
for (int i=0;i<10;i++)
{
Element e = (Element) nl.item(i);
cpName = parser.getValue(e,"coverpage");
System.out.println("coverpage name :" + cpName);
LinearLayout lbottomLayoutu1=new LinearLayout(getApplicationContext());
lbottomLayoutu1.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams layoutParams1u1= new LinearLayout.LayoutParams(width,height/4);
layoutParams1u1.weight=1.0f;
lbottomLayoutu1.setLayoutParams(layoutParams1u1);
lbottomLayoutu1.setBackgroundColor(Color.RED);
lbottomLayoutu1.setBackgroundResource(R.drawable.image);
linearLayout.addView(lbottomLayoutu1);
ImageView iv1=new ImageView(getApplicationContext());
LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(width/4,height/4);
iv1.setLayoutParams(layoutParams);
iv1.setImageResource(R.drawable.coverpage3);
lbottomLayoutu1.addView(iv1);
lbottomLayoutu1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("Calling coverpage");
String Url = WebUrl+cpName;
System.out.println("web Url: " + Url);
Intent in = new Intent(getApplicationContext(),CurlActivity.class);
Bundle bundle = new Bundle();
bundle.putString("Image Url",Url);
in.putExtras(bundle);
startActivity(in);
}
});
setContentView(linearLayout);
}
我为每个布局都设置了触摸事件。但是,如果我触摸任何布局,我怎么知道哪个布局正在触摸?
答案 0 :(得分:0)
我认为最好使用自定义listView(例如此处http://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text)
答案 1 :(得分:0)
您需要将每个布局的ID设置为
obj.setId(i)
因此,在触摸事件中,您可以使用
识别它 int id=obj.getId()
并相应地开展工作!
答案 2 :(得分:0)
如果您为视图实现OnClickListener,就像您一样......
lbottomLayoutu1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ...
}
}
...参数View v
告诉您触摸了哪个布局。然后,您可以将其转换为预期的布局,例如:
LinearLayout clickedLayout = (LinearLayout) v;
这将是已点击的布局。
但是,如果您想知道循环中使用的索引,则必须覆盖LinearLayout
并为其提供包含索引的成员。然后,您可以将其强制转换为自定义LinearLayout类并获取索引。 (如果您需要更多帮助,请在评论中告诉我们。)