当前位置: 首页 > 知识库问答 >
问题:

onCreate之后将TableRows和TextViews加载到TableLayout中

盛建德
2023-03-14

我希望将带有TextViews的表加载到OnCreate之外的表中。应该是那样的。

    TableLayout tableLayout;

     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.sec);

            tableLayout = (TableLayout)findViewById(R.id.itemTable);
    
            TableRow tr = new TableRow(getApplicationContext());
            tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
    
            TextView tv = new TextView(getApplicationContext());
            tv.setText("Dynamic Textview");
            tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
    
            tr.addView(tv);
    
            tableLayout.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));
        }

问题是我想在oncreate函数之外完成整个操作。只能在运行时添加行和文本视图。如果我在外面做,那么添加的元素会呈现,但不会显示。甚至有可能在oncreate之外加载它吗?

xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TableLayout
        android:id="@+id/itemTable"
        android:layout_width="703dp"
        android:layout_height="241dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        android:background="@color/orange"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>

我要使用的函数:

public void setView () {

     TableRow tr = new TableRow(getContext());
     tr.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));

     for (int i = 0; i < 5; i++) {
         TextView tv = new TextView(getContext());
         tv.setText("Dynamic Textview");
         tv.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
         tr.addView(tv);
     }

     tr.invalidate();
     tableLayout.addView(tr, new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT));

     tableLayout.invalidate();

 }

共有1个答案

吕高昂
2023-03-14

在TableLayout或TableRow加载后,尝试调用PostInvalidate()

 类似资料:
  • JEditorPane类型中的read(InputStream,Document)方法不适用于参数(FileInputStream,Document,int)

  • 问题内容: 我有一个正在运行且工作正常的JSF2应用程序。我在JSF中遇到的问题是资源束。所有资源都有后缀。因此成为在浏览器中加载时。我想拥有它,这样就不会添加到资源中(不要在乎页面本身)。 是否有一个地方,我们可以一个方式 不 具有附加的资源呢? 理想情况下,我不必更改网站的内部运作方式。我在下面列出了一些想法,但我必须说我不太喜欢这些想法。希望在某处找到解决方案? 我在Glassfish 3.

  • 是否有人可以提供一些建议,说明如何从loadContent()将以下内容加载到webviewer上? 我试着做这样的事,但似乎不起作用。谢谢!

  • 我正在使用迁移工具作为链接:https://docs.jboss.org/author/display/CMTOOL/WildFly8到10,并根据此链接更正一些配置:[在下面的评论中发布,url_1]。 一切完成后,我可以毫无错误地启动服务,但当我打开URL时—— 我签入了服务器。日志并没有关于404的日志,但我确实比较了一下,发现它并没有加载其中一个。war文件夹(camunda-welcom

  • 祝大家日安。 如何改变桌面的背景颜色时,聚焦?