android动态添加视图

时间:2013-06-05 16:40:34

标签: android view dynamic-data

我在线性布局中动态添加视图,如下所示:

的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)文本视图是从左到右添加的,如何从右到左添加它们?

感谢

1 个答案:

答案 0 :(得分:0)

你需要了解ViewGroups的工作原理,在这种情况下,LinearLayout将水平或垂直添加项目而不为你进行位置计算,除非你明确指定(跳转到下一行不是其中之一......),想一想作为一个项目持有者,它只会在你为它指定的空间上显示项目(这就是为什么有些元素会消失...),默认情况下,LinearLayout排列项目的方式是从左到右或从上到下,如果这不是满足您的需求,您可以选择Android所拥有的任何ViewGroup选项,最重要的可能是:

RelativeLayout的 的FrameLayout TableLayout AbsoluteLayout(不推荐)

如果你需要在屏幕上进行某种免费抽奖,你可以随时使用View对象,覆盖onDraw,然后使用该对象的画布...

问候!

相关问题