我正在制作设置页面并收到此警告: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>
我希望ToggleButton
和Button
视图垂直居中。有没有更简单的&amp;更好的方法是删除警告?
答案 0 :(得分:1)
此LinearLayout布局或其RelativeLayout父布局无用;将background属性传递给另一个视图。 这只是一个警告,因为你使用RelativeLayout作为你的父亲,然后在里面只定义一个线性布局。所以你最好只使用LinearLayout或RelativeLayout。
答案 1 :(得分:1)
您可以将所有视图集中在LinerarLayout
中注意:
之间的区别android:gravity="center_vertical"
和
android:layout_gravity="center_vertical"
您的布局应如下所示:
<?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属性。