0

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

我的活动:

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>
4

1 回答 1

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;
        }
于 2013-05-07T18:07:07.080 回答