如何动态地将新元素设置为TableLayout中的特定列?

时间:2013-05-07 17:06:15

标签: android dynamically-generated android-tablelayout tablerow

我想动态地将新的ImageView添加到tableLayout。在动态添加它们时,我想将它们放在我想要的任何列中。我使用" android:layout_weight =" 7""为了将行分成8个相等的列。例如,我想将新图像添加到第5列。下面的代码将Image始终放在第一列。我该怎么办?代码有什么问题?提前谢谢..

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>

1 个答案:

答案 0 :(得分: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;
        }