【发布时间】:2013-12-15 22:37:11
【问题描述】:
我正在尝试使用此代码添加多个自定义视图(现在它们是简单的矩形)
//Defining the layout
HandLayout = new LinearLayout(this);
HandLayout.setOrientation(LinearLayout.HORIZONTAL);
HandLayout.setBackgroundColor(getResources().getColor(R.color.bg_hand));
HandLayout.setLayoutParams(new LayoutParams(getResources().getInteger(R.integer.dim_hand_width), getResources().getInteger(R.integer.dim_hand_height)));
//Some more code
int dx = getResources().getInteger(R.integer.dim_cardslot_width);
for (int i = 0; i < 6; i++){
Card c = new Card(this,i);
HandLayout.addView(c);
c.setX(i*dx);
}
问题在于,我只看到第一个矩形,而不是让 6 个矩形一个接一个。
我认为矩形在那里,但在第一个绘制的矩形“后面”。我如何告诉视图将它们 dx 向右“移动”?
感谢您的帮助
编辑:我认为问题出在 Card Class 代码上。在一位用户提出建议后,我尝试添加 TextViews 并且它们起作用了。这是卡片类的代码(注意唯一不存在的代码是一堆常量整数的声明)。
public Card(Context context, int id) {
super(context);
// TODO Auto-generated constructor stub
borders = new Rect(0,0,
getResources().getInteger(R.integer.dim_cardslot_width),
getResources().getInteger(R.integer.dim_cardslot_height));
offw = (getResources().getInteger(R.integer.dim_cardslot_width) - getResources().getInteger(R.integer.dim_card_width))/2;
offh = (getResources().getInteger(R.integer.dim_cardslot_height) - getResources().getInteger(R.integer.dim_card_height))/2;
cborders = new RectF((float)offw, (float)offh,
(float)getResources().getInteger(R.integer.dim_card_width),
(float)getResources().getInteger(R.integer.dim_card_height));
ntext = Typeface.create(Typeface.MONOSPACE,Typeface.NORMAL);
paint = new Paint();
}
protected void onDraw(Canvas canvas){
paint.setColor(getResources().getColor(R.color.bg_card));
canvas.drawRect(borders, paint);
paint.setColor(getResources().getColor(R.color.main_card));
canvas.drawRoundRect(cborders, rad, rad, paint);
paint.setColor(getResources().getColor(R.color.card_text));
paint.setTextSize(14);
canvas.drawText("Card: " + String.valueOf(ID),offw,TopOffset+CharHeight,paint);
}
【问题讨论】:
-
你确定你的布局没有在屏幕右边,因为你设置了水平方向。
-
我的布局是彩色涂层的(所以我可以看到它的统计数据和结束位置)它具有我指定的确切尺寸。现在视图可能位于屏幕左侧(显示的卡片位于屏幕左侧)。但是,如何检查/解决这个问题?
-
你能不能也放一张你的输出图片