我在xml上有一个linearlayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rootlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
我通过以下代码在其中添加动态100个文本视图:
llayout = (LinearLayout) findViewById(R.id.rootlayout);
for (int i = 0; i < 100; i++) {
TextView tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
int randomInt = new Random().nextInt(100) +1 ;
tv.setText(""+randomInt);
llayout.addView(tv);
}
结果是添加了100个文本视图并垂直显示。这不是我的期望。我希望这些textviews显示在布局中的随机位置,如下图所示:
怎么做?谢谢!
答案 0 :(得分:3)
LinearLayout
用于线性布局其子项(顾名思义)。
由于没有RandomLayout
,您可以使用带有随机左侧和顶部布局边距的RelativeLayout
,或AbsoluteLayout
并设置随机x和y。
修改:避免重叠文字
随机位置当然会导致重叠,您可以自行调整位置或忽略与之前位置太相似的位置。或者,您实际上可能会比较要添加到容器中所有其他视图的视图的边界框(左侧,顶部,宽度,高度),如果有任何重叠,请为其找到另一个位置。
答案 1 :(得分:2)
你可以使用tv.setX(位置)和tv.setY(位置)来显示特定位置的视图