0

我必须使用 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);
}

我为每个布局设置了一个触摸事件。但是如果我触摸任何布局,我怎么知道哪个布局正在触摸?

4

3 回答 3

0

您需要将每个布局的 id 设置为

    obj.setId(i)

以便在您的触摸事件中您可以识别它

    int id=obj.getId()

并相应地工作!

于 2013-04-12T10:32:32.990 回答
0

我认为最好使用自定义 listView (比如这里http://www.codeproject.com/Articles/507651/Customized-Android-ListView-with-Image-and-Text

于 2013-04-12T10:26:04.360 回答
0

如果您为视图实现 OnClickListener,就像您所做的那样......

lbottomLayoutu1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // ...
    }
}

...该参数View v告诉您已触及哪个布局。然后,您可以将其转换为您预期的布局,例如:

LinearLayout clickedLayout = (LinearLayout) v;

这将是已单击的布局。

然而,如果你想知道你在循环中使用的索引,你必须覆盖你的LinearLayout并给它一个保存索引的成员。然后您可以将其转换为您的自定义 LinearLayout 类并获取索引。(如果您需要更多帮助,请在评论中告诉我)。

于 2013-10-18T10:54:42.207 回答