我想用随机位置的100个不同字母填充屏幕。在iPhone上,我刚刚创建了一堆UILabels设置它们的x和y位置,然后使用动画来移动它们。
在Android上,看起来我不能在我的视图中添加TextView并指定其X和Y.有没有办法做到这一点?
View gameView = findViewById(R.id.gameboard);
tv = new TextView(gameView.getContext());
tv.setText("A");
tv.setWidth(w); tv.setHeight(h);
// How to set the X and Y?
编辑:解决方案是使用AbsoluteLayout:
AbsoluteLayout al = (AbsoluteLayout)findViewById(R.id.gb_layout);
tv = new TextView(this);
AbsoluteLayout.LayoutParams params = new AbsoluteLayout.LayoutParams(
AbsoluteLayout.LayoutParams.WRAP_CONTENT,
AbsoluteLayout.LayoutParams.WRAP_CONTENT,10,10);
params.x = 50;
params.y = 50;
al.addView(tv, params);
并根据MotionEvent me移动它:
AbsoluteLayout.LayoutParams p = new AbsoluteLayout.LayoutParams(
AbsoluteLayout.LayoutParams.WRAP_CONTENT,
AbsoluteLayout.LayoutParams.WRAP_CONTENT,(int)me.getX(), (int)me.getY());
mTV.setLayoutParams (p);
答案 0 :(得分:0)
我认为你正在制作游戏,为此你应该研究一下SurfaceView here就是一个很好的例子
1 ...如果您查看代码,有onDraw方法,您将获得屏幕宽度和高度
2 ...现在将此宽度和高度作为随机生成器的种子获取x和y位置。
3 ...通过点2迭代100次,您将获得所需的结果
答案 1 :(得分:0)
您可以使用FrameLayout。将每个TextView的背景设置为透明,并将其添加到FrameLayout。使每个TextView和FrameLayout填充其父级。 FrameLayout将其所有子视图放在(0,0)处。要移动字母,只需更改相应TextView的顶部和左侧填充。
答案 2 :(得分:0)
在android定位中,子视图是布局类的责任。
您需要创建custom.layout并覆盖onLayout方法。在此方法中,您可以遍历调用每个子项上的View.layout(左,上,右,下)的所有子视图。
我在拖网时找到了这个示例代码: https://gist.github.com/882650
您还应该查看view.setTranslationX(和Y),这可能正是您所需要的
答案 3 :(得分:-1)
我不完全确定如何在代码中执行此操作,但您需要使用绝对布局作为根元素。 (编辑:不要使用绝对布局,因为有人指出它已被弃用。最接近的替代方案似乎是RelativeLayout。)
绝对布局坐标的XML格式的属性是layout_x和layout_y。
编辑:有一项研究表明你需要使用setLayoutParams,但我的Eclipse IDE无法正常工作,所以很遗憾我无法准确测试你正在寻找的东西。