0

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

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>

爪哇:

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

谢谢

4

1 回答 1

0

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

RelativeLayout FrameLayout TableLayout AbsoluteLayout(不推荐)

如果您需要在屏幕上进行某种 Free Draw,您可以随时选择 View 对象,覆盖 onDraw,然后使用该对象的画布进行操作...

问候!

于 2013-06-05T17:08:21.150 回答