XML错误“网格布局无用”(Android Studio)

时间:2016-07-01 22:00:06

标签: android xml android-layout

我目前正在Udemy学习Android开发课程,目前我正在学习如何构建一个基本的短语应用程序,其中包含一个网格布局。我完全遵循了教师对XML部分的处理方式,并且我收到了教师没有得到的错误:

This GridLayout layout or its RelativeLayout parent is useless.  A layout with children that has no siblings, is not a scrollview or a root layout, and does not have a background, can be removed and have its children moved directly into the parent for a flatter and more efficient layout hierarchy.

这是XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.jumin.basicphrases.MainActivity">

     <GridLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_alignParentTop="true"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true">

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="0"
             android:layout_row="0"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Hello"
             android:onClick="buttonTapped"
             android:id="@+id/button" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="0"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="How are you?"
             android:onClick="buttonTapped"
             android:id="@+id/howareyou" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="0"
             android:layout_row="1"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Good Evening"
             android:onClick="buttonTapped"
             android:id="@+id/goodevening" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="1"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Please"
             android:onClick="buttonTapped"
             android:id="@+id/please" />

         <Button
             android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
             android:layout_column="0"
                  android:layout_row="2"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="My name is..."
             android:onClick="buttonTapped"
             android:id="@+id/mynameis" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="2"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Do you &#10; speak English?"
             android:onClick="buttonTapped"
             android:id="@+id/doyouspeakenglish" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="0"
             android:layout_row="3"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Welcome"
             android:onClick="buttonTapped"
             android:id="@+id/welcome" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="3"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="I live in..."
             android:onClick="buttonTapped"
             android:id="@+id/ilivein" />

     </GridLayout>
 </RelativeLayout>

2 个答案:

答案 0 :(得分:2)

错误非常明确:只需删除RelativeLayout并再试一次:

<GridLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="0"
         android:layout_row="0"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="Hello"
         android:onClick="buttonTapped"
         android:id="@+id/button" />

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="1"
         android:layout_row="0"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="How are you?"
         android:onClick="buttonTapped"
         android:id="@+id/howareyou" />

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="0"
         android:layout_row="1"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="Good Evening"
         android:onClick="buttonTapped"
         android:id="@+id/goodevening" />

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="1"
         android:layout_row="1"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="Please"
         android:onClick="buttonTapped"
         android:id="@+id/please" />

     <Button
         android:layout_width="wrap_content"
              android:layout_height="wrap_content"
         android:layout_column="0"
              android:layout_row="2"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="My name is..."
         android:onClick="buttonTapped"
         android:id="@+id/mynameis" />

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="1"
         android:layout_row="2"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="Do you &#10; speak English?"
         android:onClick="buttonTapped"
         android:id="@+id/doyouspeakenglish" />

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="0"
         android:layout_row="3"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="Welcome"
         android:onClick="buttonTapped"
         android:id="@+id/welcome" />

     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_column="1"
         android:layout_row="3"
         android:layout_columnWeight="1"
         android:layout_rowWeight="1"
         android:layout_gravity="fill"
         android:text="I live in..."
         android:onClick="buttonTapped"
         android:id="@+id/ilivein" />

 </GridLayout>

答案 1 :(得分:2)

此警告是因为您的RelativeLayout仅包含GridLayout,并且(recyclerView和GridLayout)都设置为match_parent

您可以删除RelativeLayout并将GridLayout设置为根布局,它看起来与现在完全一样,但性能更佳。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.jumin.basicphrases.MainActivity">

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="0"
             android:layout_row="0"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Hello"
             android:onClick="buttonTapped"
             android:id="@+id/button" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="0"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="How are you?"
             android:onClick="buttonTapped"
             android:id="@+id/howareyou" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="0"
             android:layout_row="1"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Good Evening"
             android:onClick="buttonTapped"
             android:id="@+id/goodevening" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="1"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Please"
             android:onClick="buttonTapped"
             android:id="@+id/please" />

         <Button
             android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
             android:layout_column="0"
                  android:layout_row="2"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="My name is..."
             android:onClick="buttonTapped"
             android:id="@+id/mynameis" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="2"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Do you &#10; speak English?"
             android:onClick="buttonTapped"
             android:id="@+id/doyouspeakenglish" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="0"
             android:layout_row="3"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="Welcome"
             android:onClick="buttonTapped"
             android:id="@+id/welcome" />

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_column="1"
             android:layout_row="3"
             android:layout_columnWeight="1"
             android:layout_rowWeight="1"
             android:layout_gravity="fill"
             android:text="I live in..."
             android:onClick="buttonTapped"
             android:id="@+id/ilivein" />

     </GridLayout>