2010-02-24 152 views
2

如上所述,我如何在一个tablerow的一个单元内放置2个视图? 我创建了一个表格布局,并通过代码添加行。如何在TableRow的一个单元格中添加多个视图?

下面是我的代码,:

TableLayout v = (TableLayout)inflater.inflate(R.layout.featureitem2, null); 
// v.setColumnStretchable(0, true); 


    //adds each productname to the table 
    if(productName.size()>1){ 
     TableRow pnamesRow = new TableRow(t); 
     pnamesRow.addView(new View(t)); 
     for(int j=0;j < productName.size();j++){ 

      LinearLayout wrap = new LinearLayout(t); 
      LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,TableRow.LayoutParams.FILL_PARENT); 
      wrap.setLayoutParams(params); 
      wrap.setOrientation(LinearLayout.HORIZONTAL); 
      wrap.setVisibility(View.VISIBLE); 

      ImageView remove = new ImageView(t); 
      remove.setTag(j); 
      remove.setClickable(true); 
      remove.setImageDrawable(t.getResources().getDrawable(R.drawable.remove)); 
      remove.setOnClickListener(new OnClickListener(){ 
       @Override 
       public void onClick(View arg0) { 
        int deletePosition = (Integer)arg0.getTag(); 
        Log.v("pos","pos="+deletePosition); 
        removeChild(deletePosition); 
        notifyDataSetChanged(); 
       } 

      }); 


      TextView pname = new TextView(t); 
      pname.setText(productName.get(j)); 
      pname.setGravity(Gravity.CENTER); 
     // wrap.addView(pname); 
      wrap.addView(remove); 
      wrap.setLayoutParams(params); 
      pnamesRow.addView(pname); 
     // pnamesRow.addView(pname); 
     // pnamesRow.addView(remove,j+1); 
      //tbIndex++; 
     } 
     v.addView(pnamesRow); 
    } 

    for(int z =0;z < children.get(groupPosition).size();z++){ 
     TableRow tr2 =new TableRow(t); 
     Feature f = (Feature) children.get(groupPosition).get(z); 
     TextView feature = new TextView(t); 
     feature.setText(f.getFeaturename()); 
     feature.setTextColor(Color.BLACK); 
     feature.setGravity(Gravity.CENTER); 
     tr2.addView(feature); 
     for(int k =0;k < f.getNumFeatures();k++){ 
      TextView value = new TextView(t); 
      value.setText(f.getVal(k)); 
      value.setTextColor(Color.BLACK); 
      //value.setGravity(Gravity.CENTER); 
      value.offsetLeftAndRight(20); 
      tr2.addView(value); 
      v.setColumnShrinkable(k+1, true); 
      tr2.setPadding(5, 5, 5, 5); 
      tr2.offsetTopAndBottom(50); 
     } 

     v.addView(tr2); 
    } 

我想我已经找到了答案,这要归功于commonsWare,

我应该设置layoutparamslinearlayout后,才添加的项目进入linearlayout

回答

5

您将需要把他们在某种容器,如LinearLayoutRelativeLayout。只能有一个View每个细胞,但如果View是一个容器,然后一个View可实际上是由几个。但是,请记住,手机屏幕很小。将容器嵌套在TableLayout内可能难以在QVGA屏幕上使用。

+0

嗨ConmmonsWare,我试图把我的意见内linearLayout,如上面的代码显示....但是,当我运行应用程序不可见 – alan 2010-02-24 13:54:13

+1

使用'hierarchyviewer'找出什么是错的,然后。 – CommonsWare 2010-02-24 14:51:22

相关问题