动态地将视图添加到布局

福斯伯格

作为平台上的新手,我在使用Android时遇到了困难,据我了解,也有很多人。我不知道到目前为止我已经失去了几个小时-甚至算上他们也很恐怖。

我基本上想在单击按钮后向LinearLayout添加一个新的TextView(或任何其他视图)。这是代码的这一部分:

public void btnClick(View view) {

    final LinearLayout ll = (LinearLayout) findViewById(R.id.test_story_screen_layout);

    //checking if child is being added - it is, this value is increase with every button click
    android.util.Log.d("child: ", Integer.toString(ll.getChildCount()));
    android.util.Log.d("height: ", Integer.toString(ll.getMeasuredHeight()));

    ll.post(new Runnable() {

        public void run() {
            final TextView tv = new TextView(MainActivity.this);
            tv.setText("new one " + (new Random()).nextInt());
            tv.setTextColor(Color.YELLOW);
            LayoutParams lp = new LayoutParams(200, 500);
            tv.setLayoutParams(lp);
            tv.setVisibility(View.VISIBLE);
            ll.addView(tv, ll.getChildCount());

            //checking if the run() is called - it is
            ll.setBackgroundColor(Color.GREEN);
        }
    });

    ll.requestLayout(); //invalidate() and postInvalidate() also not working
}

但是新添加的View不可见(但作为子元素添加到LinearLayout中)。

经过数小时的检查,出了什么问题之后,我才发现当我替换此行时:

            ll.addView(tv, ll.getChildCount());

有了这个:

            ll.addView(tv, ll.getChildCount() - 1);

这样便可以看到新的视图,但是它将替换上一个视图-这是不希望的。

我已经检查了一些解决方案,例如:在添加视图后刷新LinearLayout

他们没有帮助我解决这个问题。

更新:

使用XML预定义的两个视图,线性布局看起来就很好(如下面的代码所示)。这是XML的有趣部分:

<LinearLayout
    android:id="@+id/test_story_screen_layout"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:orientation="vertical"
    android:layout_margin="16dp" >
    <ImageView
        android:id="@+id/imageView1"
        android:src="@drawable/example"
        android:layout_width="16dp"
        android:layout_height="16dp" />
    <TextView
        android:id="@+id/textView1"
        android:text="Hello World!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

我认为没什么不寻常的。因此,这两个视图(图像和文本)当然是可见的。然后,我动态地(通过上面的代码中的btnClick())添加到此LinearLayout的任何新TextView都不可见,但实际上已添加到Layout中,因为每次在子视图被添加时ll.getChildCount()都会增加。已添加(=按钮已单击)。

为了进一步测试,我在btnClick()方法的末尾添加了这两行:

    android.util.Log.d("tv.getMeasuredWidth: ", Integer.toString(tv.getMeasuredWidth()));
    android.util.Log.d("tv.getMeasuredHeight: ", Integer.toString(tv.getMeasuredHeight()));

我猜问题是电视(TextView)而不是ll(LinearLayout),因为电视的宽度和高度都为0。

福斯伯格

此Android问题涉及许多相关事项,其中包括:

  • ll.post()很合理,在我看来是必需的
  • Android中的UI应该以一种特殊的方式进行更新,而不是以任何方式进行更新,并且它指的是例如异步任务
  • 项目的可见性(项目应该可见)
  • 适当的边距(当屏幕旋转至横向时,边距似乎太大)

该死的。我发现Android是我所见识最少的平台之一。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何动态地将 LinearLayoutCompat 视图添加到现有的 xml 布局?

来自分类Dev

如何动态地将按钮添加到视图以便布局宽度正常工作?

来自分类Dev

动态地将视图添加到RecyclerView

来自分类Dev

动态地将xml布局添加到我当前的Activity布局中

来自分类Dev

如何动态地在滚动视图中将自定义布局添加到线性布局

来自分类Dev

动态地将多个视图添加到ListView的行

来自分类Dev

如何动态地将Image添加到ImageView?

来自分类Dev

动态地将超链接添加到gridview

来自分类Dev

动态地将数据添加到QTableView

来自分类Dev

动态地将标签添加到JTabbedPane

来自分类Dev

动态地将属性添加到类

来自分类Dev

动态地将内容添加到标签页

来自分类Dev

如何动态地将图像添加到imageView

来自分类Dev

动态地将元素添加到HTML页面

来自分类Dev

如何动态地将图像从URL的字符串数组添加到活动的scrollview线性布局

来自分类Dev

动态地将节点添加到D3树布局请求(切换时)

来自分类Dev

动态地将手势添加到现有表视图节标题中

来自分类Dev

动态地将不确定数量的视图添加到视图组

来自分类Dev

动态将滚动视图添加到线性布局

来自分类Dev

动态地将行添加到具有动态接收的列数的表中

来自分类Dev

如何动态地将QScrollArea添加到StackedWidget页面并向其中添加小部件?

来自分类Dev

如何动态地将类添加到焦点输入字段的父div?

来自分类Dev

如何动态地将新数组添加到现有数组中

来自分类Dev

如何动态地将行添加到特定的UITableView节?

来自分类Dev

是否可以从Java动态地将方法添加到Groovy基本脚本中?

来自分类Dev

如何动态地将ng-pattern属性添加到html元素?

来自分类Dev

如何动态地将外部定义的bean定义添加到Spring上下文?

来自分类Dev

动态地将内容添加到中心区xaml

来自分类Dev

动态地将现有ToolStripMenuItem添加到ContextMenu使其从其原始位置消失

Related 相关文章

  1. 1

    如何动态地将 LinearLayoutCompat 视图添加到现有的 xml 布局?

  2. 2

    如何动态地将按钮添加到视图以便布局宽度正常工作?

  3. 3

    动态地将视图添加到RecyclerView

  4. 4

    动态地将xml布局添加到我当前的Activity布局中

  5. 5

    如何动态地在滚动视图中将自定义布局添加到线性布局

  6. 6

    动态地将多个视图添加到ListView的行

  7. 7

    如何动态地将Image添加到ImageView?

  8. 8

    动态地将超链接添加到gridview

  9. 9

    动态地将数据添加到QTableView

  10. 10

    动态地将标签添加到JTabbedPane

  11. 11

    动态地将属性添加到类

  12. 12

    动态地将内容添加到标签页

  13. 13

    如何动态地将图像添加到imageView

  14. 14

    动态地将元素添加到HTML页面

  15. 15

    如何动态地将图像从URL的字符串数组添加到活动的scrollview线性布局

  16. 16

    动态地将节点添加到D3树布局请求(切换时)

  17. 17

    动态地将手势添加到现有表视图节标题中

  18. 18

    动态地将不确定数量的视图添加到视图组

  19. 19

    动态将滚动视图添加到线性布局

  20. 20

    动态地将行添加到具有动态接收的列数的表中

  21. 21

    如何动态地将QScrollArea添加到StackedWidget页面并向其中添加小部件?

  22. 22

    如何动态地将类添加到焦点输入字段的父div?

  23. 23

    如何动态地将新数组添加到现有数组中

  24. 24

    如何动态地将行添加到特定的UITableView节?

  25. 25

    是否可以从Java动态地将方法添加到Groovy基本脚本中?

  26. 26

    如何动态地将ng-pattern属性添加到html元素?

  27. 27

    如何动态地将外部定义的bean定义添加到Spring上下文?

  28. 28

    动态地将内容添加到中心区xaml

  29. 29

    动态地将现有ToolStripMenuItem添加到ContextMenu使其从其原始位置消失

热门标签

归档