Android - 布局是无用的警告

时间:2014-07-21 17:52:21

标签: android android-layout

我正在制作设置页面并收到此警告:This LinearLayout layout or its RelativeLayout parent is useless; transfer the background attribute to the other view

这是代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_centerVertical="true" >

        <ToggleButton android:id="@+id/settings_sound_toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textOn="Sound On"
            android:textOff="Sound Off"
            android:onClick="soundToggleClick"
            android:layout_marginBottom="20dp" />

        <Button android:id="@+id/settings_highscore_reset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/clear_highscore"
            android:onClick="highscoreResetClick" />

    </LinearLayout>

</RelativeLayout>

我希望ToggleButtonButton视图垂直居中。有没有更简单的&amp;更好的方法是删除警告?

6 个答案:

答案 0 :(得分:1)

此LinearLayout布局或其RelativeLayout父布局无用;将background属性传递给另一个视图。  这只是一个警告,因为你使用RelativeLayout作为你的父亲,然后在里面只定义一个线性布局。所以你最好只使用LinearLayout或RelativeLayout。

答案 1 :(得分:1)

您可以将所有视图集中在LinerarLayout

注意:

之间的区别
android:gravity="center_vertical"

android:layout_gravity="center_vertical"
  • &#34;重力&#34;告诉容器将所有子视图集中在容器内
  • &#34; layout_gravity&#34;告诉视图应如何在父容器中对齐

您的布局应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical"
    android:gravity="center_vertical" >

    <ToggleButton android:id="@+id/settings_sound_toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textOn="Sound On"
        android:textOff="Sound Off"
        android:onClick="soundToggleClick"
        android:layout_marginBottom="20dp" />

    <Button android:id="@+id/settings_highscore_reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/clear_highscore"
        android:onClick="highscoreResetClick" />

</LinearLayout>

答案 2 :(得分:0)

RelativeLayout只有一个孩子,因此没用。您可以删除它并将LinearLayout作为顶部元素。

只需在LinearLayout指定背景。

答案 3 :(得分:0)

您可以尝试一起摆脱线性布局并在相对布局中使用它吗?

android:layout_gravity="center_vertical"

答案 4 :(得分:0)

更改为:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_gravity="center_vertical"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <ToggleButton
        android:id="@+id/settings_sound_toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="20dp"
        android:onClick="soundToggleClick"
        android:textOff="Sound Off"
        android:textOn="Sound On" />

    <Button
        android:id="@+id/settings_highscore_reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:onClick="highscoreResetClick"
        android:text="@string/clear_highscore" />

</LinearLayout>

答案 5 :(得分:0)

我认为这就是你想要的。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >

    <Button
        android:id="@+id/settings_highscore_reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="highscoreResetClick"
        android:text="@string/clear_highscore" />

    <ToggleButton
        android:id="@+id/settings_sound_toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/settings_highscore_reset"
        android:layout_centerHorizontal="true"
        android:onClick="soundToggleClick"
        android:textOff="Sound Off"
        android:textOn="Sound On" />

</RelativeLayout>

或者您可以使用GridLayout正确居中。

或者您可以使用类似

的内容
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background" >

    <Button
        android:id="@+id/settings_highscore_reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:onClick="highscoreResetClick"
        android:text="@string/clear_highscore" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />

    <ToggleButton
        android:id="@+id/settings_sound_toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:onClick="soundToggleClick"
        android:textOff="Sound Off"
        android:textOn="Sound On" />

</RelativeLayout>

我知道这不是解决问题的好办法。如果对你好的话,这只是一个意见。我个人不会在项目中使用这样的代码。我希望它有所帮助:D

如果您只使用LinearLayout作为父级,那么Sandro Machado也能得到最好的答案。因为你无论如何都没有使用relativelayout属性。