【问题标题】:android adding views dynamicallyandroid动态添加视图
【发布时间】:2013-06-05 16:40:34
【问题描述】:

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

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) textviews是从左到右添加的,如何从右到左添加呢?

谢谢

【问题讨论】:

    标签: android view dynamic-data


    【解决方案1】:

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

    相对布局 框架布局 表格布局 AbsoluteLayout(不推荐)

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

    问候!

    【讨论】:

    • 感谢 Martin 通过这个问题,非常感谢.. 实际上我知道其他类型的布局,但它们不适合我的设计.. 我刚刚发现与我相似的东西正在考虑但我仍然会尝试它,然后检查从右到左的问题,它被称为流布局..github.com/ApmeM/android-flowlayout
    猜你喜欢
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多