我在线性布局中动态添加视图,如下所示:
的xml:
<LinearLayout
android:id="@+id/part1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:orientation="horizontal" >
</LinearLayout>
的java:
View linearLayout = findViewById(R.id.part1);
((LinearLayout) linearLayout).removeAllViews();
for (int i = 0; i < 15; i ++){
TextView tv = new TextView(this);
tv.setText(String.valueOf(i));
LinearLayout.LayoutParams lay = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
tv.setLayoutParams(lay);
tv.setBackgroundResource(R.drawable.msg);
tv.setId(i);
((LinearLayout) linearLayout).addView(tv);
}
现在我有两个问题:
1)文本视图水平正确添加,但如果不适合屏幕大小,其中一些不会出现,如果水平空间已满,如何强制它继续添加新行?
2)文本视图是从左到右添加的,如何从右到左添加它们?
感谢
答案 0 :(得分:0)
你需要了解ViewGroups的工作原理,在这种情况下,LinearLayout将水平或垂直添加项目而不为你进行位置计算,除非你明确指定(跳转到下一行不是其中之一......),想一想作为一个项目持有者,它只会在你为它指定的空间上显示项目(这就是为什么有些元素会消失...),默认情况下,LinearLayout排列项目的方式是从左到右或从上到下,如果这不是满足您的需求,您可以选择Android所拥有的任何ViewGroup选项,最重要的可能是:
RelativeLayout的 的FrameLayout TableLayout AbsoluteLayout(不推荐)
如果你需要在屏幕上进行某种免费抽奖,你可以随时使用View对象,覆盖onDraw,然后使用该对象的画布...
问候!