【问题标题】:This TableRow layout or its TableLayout parent is possibly useless此 TableRow 布局或其 TableLayout 父级可能无用
【发布时间】:2021-09-15 00:37:50
【问题描述】:

我在一个 xml 文件中有一个警告:这个 TableRow 布局或其 TableLayout 父级可能没用。

<TableRow android:id="@+id/tableRow2">
      ...       
</TableRow>

我把属性android:id放在那里,但是警告没有消失。

关于什么可能导致警告的任何想法?

【问题讨论】:

  • 你能显示你的代码吗......这代码不足以识别......在 TabRow 之前放置代码

标签: android android-layout


【解决方案1】:

添加

tools:ignore="UselessParent"

到您的表格行以避免警告或在您收到警告的标记中。

【讨论】:

  • 这将仅忽略警告..但是最好删除代码或使用它..
  • 如果您在布局中需要父标签,而不仅仅是删除警告,并且如果您不希望父标签用直接子标签替换它。
  • 你这个东西会更好地替换父...使用而不是工具:忽略
【解决方案2】:

接受的答案不是最佳解决方案,忽略警告是可怕的做法。除非警告来自编译器或 linter 本身的错误,否则消除警告几乎总是比忽略它更好的选择。

在这种情况下,正如对已接受答案的响应所示,您所要做的就是删除 TableRowTableLayout 父级。警告很可能在那里,因为您有一个只有一行的表,所以TableLayout 是不必要的。

例如改变这个:

<TableLayout 
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TableRow android:id="@+id/tableRow2">
        ...
    </TableRow>
</TableLayout>

到这里:

<TableRow
    android:id="@+id/tableRow2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    ...
</TableRow>

【讨论】:

  • 虽然我理解忽略警告的危险,但我收到了这条特殊信息并且忽略了它,因为在这种特殊情况下,这样做对我来说是有意义的。我正在使用 XML 中的单行创建一个表,然后以编程方式添加行,因此我需要 TableLayout 以及单个 TableRow。我本可以在 onCreate 期间以编程方式添加第一行,但从逻辑上讲,将它放在 XML 中并容忍警告对我来说更有意义。
  • @Matthew 这很有道理,你说得很好。在这种情况下,您并没有真正忽略警告,因为您知道TableLayout 将充满孩子,所以它不是没用的。因此,警告的目的是让您注意可能存在的问题,并且您已经确定这不是问题,因为您以编程方式解决了它,因此消除警告是有意义的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多