将 TableRow 动态添加到 TableLayout 的上方

Posted

技术标签:

【中文标题】将 TableRow 动态添加到 TableLayout 的上方【英文标题】:Dynamically add TableRow to above of TableLayout 【发布时间】:2018-09-19 16:33:37 【问题描述】:

我想将TableRow 动态添加到TableLayout 的上方。我使用打击代码:

在我的活动中:

TableLayout table = (TableLayout)ChatActivity.this.findViewById(R.id.tblChats);
        for(int i = 1; i < 10; ++i)
        
            TableRow row = (TableRow)LayoutInflater.from(ChatActivity.this).inflate(R.layout.chat_row, null);
            ((TextView)row.findViewById(R.id.attrib_name)).setText("A");
            ((TextView)row.findViewById(R.id.attrib_value)).setText(i + "");
            table.addView(row);
        
        table.requestLayout();

chat_row.xml:

<?xml version="1.0" encoding="utf-8"?>

<TableRow xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView android:id="@+id/attrib_name"
        android:textStyle="bold"/>

    <TextView android:id="@+id/attrib_value"
        android:gravity="right"
        android:textStyle="normal"/>

</TableRow>

如您所知,这些代码在TableLayout 的底部添加了TableRow

有没有办法把它加到TableLayout上面?

【问题讨论】:

是的,我想做。 【参考方案1】:

是的,您可以在表格布局中添加行作为运行时。 使用以下代码,如 chart.xml

<?xml version="1.0" encoding="utf-8"?>   
<TableLayout 

xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tblChats"
android:layout_
android:layout_>  </TableLayout>

并进行如下活动..

public class ChartActivity extends AppCompatActivity 

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chart_layout);
        TableLayout table = findViewById(R.id.tblChats);
        for (int i = 0; i < 5; i++) 

            TableRow row = new TableRow(this);
            TableRow.LayoutParams lp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT);
            row.setLayoutParams(lp);
            TextView textView = new TextView(this);
            textView.setText("Name" + " " + i);
            EditText editText = new EditText(this);
            row.addView(textView);
            table.addView(row, i);
        

    

【讨论】:

所以我必须使用它:table.addView(row, 0);谢谢它有效。【参考方案2】:

根据 Android 团队的回答,我意识到我必须更改这一行:

table.addView(row);

到这里:

table.addView(row, 0);

【讨论】:

以上是关于将 TableRow 动态添加到 TableLayout 的上方的主要内容,如果未能解决你的问题,请参考以下文章

在 TableLayout 中动态添加 TableRow 的问题

以编程方式在tablerow单元格中添加多个图像

android 关于表格布局的认识

Android:如何将 LinearLayout 的内容垂直包装在 TableRow 中?

以编程方式设置 TextView 的布局权重

以编程方式设置TextView的布局权重