0

我想动态地将新的ImageViews添加到tableLayout。在动态添加它们的同时,我希望将它们放在任何我想要的列中。我用“android:layout_weight =”7“”为了将行分成8个相等的列。例如,我想将新图像添加到第5列。下面的代码将图像始终放在第一列。我怎么能做这样的事情?代码有什么问题?在此先感谢..如何动态地将新元素设置为TableLayout中的特定列?

MyActivity:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my_table); 

    myTable=(TableLayout) findViewById(R.id.myTable); 
    tableRow1=(TableRow) findViewById(R.id.tableRow1); 

    iv_row1_column1=new ImageView(this); 

    iv_row1_column1.setBackgroundResource(R.drawable.eight); 
    tableRow1.addView(iv_row1_column1, 5); 
} 

XML文件:

<TableRow 
    android:id="@+id/tableRow1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="7" > 
</TableRow> 
+0

如果u希望与定位ü应而使用的RelativeLayout代替TableLayout – bakriOnFire 2013-05-07 17:25:21

+0

我想将屏幕分为某些部分,并把图像转换成一些地方随意发挥。每次屏幕出现时,图像将位于屏幕的不同部分。 – selenk 2013-05-07 17:52:03

回答

0

可以使用GridView控件来实现这一点。 在GridView的适配器中,您可以将可见性设置为GONE(convertView.setVisibility(View.GONE)),以便无需显示的项目。

例如: -

public View getView(int position, View convertView, ViewGroup parent) { 

      LayoutInflater mInflater = LayoutInflater.from(MyContext); 

      if (convertView == null) { 
       convertView = mInflater.inflate(R.layout.grid_item, null); 

       ImageView iv= (ImageView) convertView.findViewById(R.id.grid_item_image); 
      } 

      iv.setImageBitmap(BitmapFactory.decodeResource(MyContext.getResources(), getIconId(position))); 
      if(getIconId(position) == R.drawable.blank) { 
       convertView.setVisibility(View.GONE); 
      } 
      return convertView; 
     }