2010-02-24 55 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

相關問題