Java TableLayout如何处理TableRow?
我在滚动光标时以编程方式填充了一个TableLayout。我每个光标步骤创建3个项目:TextView、ImageView和TextView。我的问题是ImageView 在ImageView上,我想画一个ShapeDrawable(因为我已经覆盖了这样的视图) 在ImageView上,我使用可绘制的XML文件设置了一个背景资源(用于应用形状属性)。为此,我希望高度与同一表格行上的其他TextView不同 我尝试了各种组合(设置布局参数、重力、布局重量),但没有成功。结果总是一样的:ImageView与TableRow的高度相同 下面是一些代码:Java TableLayout如何处理TableRow?,java,android,Java,Android,我在滚动光标时以编程方式填充了一个TableLayout。我每个光标步骤创建3个项目:TextView、ImageView和TextView。我的问题是ImageView 在ImageView上,我想画一个ShapeDrawable(因为我已经覆盖了这样的视图) 在ImageView上,我使用可绘制的XML文件设置了一个背景资源(用于应用形状属性)。为此,我希望高度与同一表格行上的其他TextView不同 我尝试了各种组合(设置布局参数、重力、布局重量),但没有成功。结果总是一样的:ImageV
TableLayout tl = (TableLayout)findViewById(R.id.list_show_stats);
tl.setColumnStretchable(1, true);
tl.setColumnShrinkable(0, true);
for every cursor step
TableRow tr = new TableRow(this);
TableRow.LayoutParams tr_lp = new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
tr.setLayoutParams(tr_lp);
tr.setBaselineAligned(true);
TextView tv1 = new TextView(this);
LayoutParams tv1lp = new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT, 1L);
tv1lp.column = 0;
tv1lp.gravity = Gravity.LEFT|Gravity.CENTER_VERTICAL;
tv1.setLayoutParams(tv1lp);
tv1.setText(" description ");
ImageView img = new ImageView(this);
CustomImgBarDrawableView dw = new CustomImgBarDrawableView(this, width, height);
img.setImageDrawable(dw.mDrawable);
LayoutParams lp = new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT, 1L);
lp.gravity = Gravity.LEFT;
lp.column = 1;
img.setLayoutParams(lp);
img.setBackgroundResource(R.drawable.layout_showbar);
TextView tv2 = new TextView(this);
LayoutParams tv2lp = new TableRow.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT, 1L);
tv2lp.column = 2;
tv2lp.gravity = Gravity.RIGHT|Gravity.CENTER_VERTICAL|Gravity.FILL_HORIZONTAL;
tv2.setLayoutParams(tv2lp);
tv2.setText(" value ");
tr.addView(tv1);
tr.addView(img);
tr.addView(tv2);
tl.addView(tr,new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT))
public class CustomImgBarDrawableView extends View {
private ShapeDrawable mDrawable;
public CustomImgBarDrawableView(Context context, int w, int h) {
super(context);
mDrawable = new ShapeDrawable(new RectShape());
mDrawable.setIntrinsicHeight(h);
mDrawable.setIntrinsicWidth(w);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
无论如何,谢谢。我找到了另一个解决方案。
要显示累进值,而不是具有定义尺寸的单个ImageView,
我使用带有x-many ImageView填充的水平线性布局。
所以我解决了我的定位问题,授权Android正确填充空间。虽然你找到了另一个解决方案,但你可以使用
img.setLayoutParams(new TableRow.LayoutParams(width,height));