You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中两个相同TableLayout的TableRow显示不一致问题

问题:两个配置相近的TableLayout动态添加行后显示效果不一致

我在XML布局中创建了两个配置几乎完全相同的TableLayout,唯一区别是第二个TableLayout添加了android:layout_below="@+id/zaberlist"属性,指定其位于第一个TableLayout的下方。通过Kotlin代码向两个TableLayout中添加了除变量名外完全一致的、包含TextView的TableRow,但应用运行后两者的显示效果却不相同。

XML布局代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp">

    <TextView
        android:id="@+id/txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/detected_drones"
        android:textSize = "25sp"
        android:textStyle="bold"
        android:textColor="@android:color/black"
    />

    <!-- FIRST TABLELAYOUT -->
    <TableLayout
        android:id="@+id/zaberlist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0,1,2"
    />

    <!-- SECOND TABLELAYOUT -->
    <TableLayout
        android:id="@+id/naberlist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/zaberlist" <!-- ONLY DIFFERENCE BETWEEN THEM -->
        android:stretchColumns="0,1,2"
    />

    <Button
        android:id="@+id/scanBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:visibility="visible"
        android:background="@android:color/holo_green_dark"
        android:text="@string/start_scan"
        android:layout_alignParentBottom="true"
    />

    <Button
        android:id="@+id/scanBtnStop"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:visibility="gone"
        android:background="@android:color/holo_red_dark"
        android:baselineAligned="false"
        android:text="@string/stop_scan"
        android:layout_alignParentBottom="true"
    />

</RelativeLayout>

显示效果

两个TableLayout的列宽分配、内容对齐方式存在明显差异(第一个TableLayout的列未按预期均匀拉伸,第二个则正常)

Kotlin动态添加TableRow代码

val tr_head1 = TableRow(this@WIFIScannerActivity)
tr_head1.layoutParams = TableLayout.LayoutParams(
    TableLayout.LayoutParams.MATCH_PARENT,
    TableLayout.LayoutParams.WRAP_CONTENT
)

val label_name1 = TextView(this@WIFIScannerActivity)
label_name1.text = scanResult.SSID
if(scanResult.SSID==""){
    label_name1.text = "*hidden*"
}
label_name1.textSize = 14F
label_name1.layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT,1F)
label_name1.setPadding(20,0,0,0)
label_name1.setTypeface(null, Typeface.BOLD)
tr_head1.addView(label_name1) // add the column to the table row here

val label_mac1 = TextView(this@WIFIScannerActivity) // part3
label_mac1.text = scanResult.BSSID
label_mac1.textSize = 14F
label_mac1.layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT,1F)
label_mac1.setTypeface(null, Typeface.BOLD)
tr_head1.addView(label_mac1) // add the column to the table row here

val label_distance1 = TextView(this@WIFIScannerActivity) // part3
label_distance1.text = String.format("%.2f", Math.pow(10.0, (((-20 - scanResult.level).toDouble())/20)))//Math.pow(10.0, ((-20 - scanResult.level.toDouble()) / 20)).toString()
label_distance1.textSize = 14F
label_distance1.layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT,1F)
label_distance1.setPadding(0,0,20,0)
label_distance1.setTypeface(null, Typeface.BOLD)
tr_head1.addView(label_distance1)

tr_head1.setBackgroundColor(Color.LTGRAY)
tr_head1.setPadding(0,10,0,10)

// 仅修改此处的xdlist变量,将行添加到不同的TableLayout中
xdlist!!.addView(tr_head1, TableLayout.LayoutParams(
    TableLayout.LayoutParams.WRAP_CONTENT,
    TableLayout.LayoutParams.WRAP_CONTENT
))

内容的提问来源于stack exchange,提问作者kaan kaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:35:16