如何动态地将新元素设置为TableLayout中的特定列?
问题描述:
我想动态地将新的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>
答
可以使用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;
}
如果u希望与定位ü应而使用的RelativeLayout代替TableLayout – bakriOnFire 2013-05-07 17:25:21
我想将屏幕分为某些部分,并把图像转换成一些地方随意发挥。每次屏幕出现时,图像将位于屏幕的不同部分。 – selenk 2013-05-07 17:52:03