xml Android 布局的问题。布局与工具栏重叠

Posted

技术标签:

【中文标题】xml Android 布局的问题。布局与工具栏重叠【英文标题】:Problems with a xml Android layout. The layout overlaps the toolbar 【发布时间】:2021-12-23 17:34:38 【问题描述】:

我正在用 Java 编写一个 android 应用程序。

我有以下 xml 布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_
    android:layout_
    tools:context="com.geologyapplications.minerals.Ficha"
    android:theme="@android:style/Holo.Light.ButtonBar"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_
        android:layout_
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ToolbarTheme">
        <TextView
            android:id="@+id/toolbarTextView"
            android:layout_
            android:layout_
            android:layout_gravity="center"
            android:ellipsize="end"
            android:gravity="center"
            android:maxLines="1"
            android:textColor="#ffff00"
            android:textAppearance="@android:style/TextAppearance.WindowTitle"
            android:visibility="visible" />
    </androidx.appcompat.widget.Toolbar>
    <ScrollView
        android:layout_
        android:layout_
        android:id="@+id/scr1">
        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical">
            <TextView
                android:layout_
                android:layout_
                android:textStyle="bold"
                android:id="@+id/txtPregunta"
                android:textSize="20sp"/>
            <LinearLayout
                android:layout_
                android:layout_
                android:orientation="horizontal">
                <RadioGroup
                    android:layout_
                    android:layout_
                    android:orientation="vertical"
                    android:id="@+id/resps">
                    <RadioButton
                        android:layout_
                        android:layout_
                        android:id="@+id/a"
                        android:textSize="14sp"/>
                    <RadioButton
                        android:layout_
                        android:layout_
                        android:id="@+id/b"
                        android:textSize="14sp"/>
                    <RadioButton
                        android:layout_
                        android:layout_
                        android:id="@+id/c"
                        android:textSize="14sp"/>
                    <RadioButton
                        android:layout_
                        android:layout_
                        android:id="@+id/d"
                        android:textSize="14sp"/>
                </RadioGroup>
                <LinearLayout
                    android:layout_
                    android:layout_
                    android:orientation="vertical">
                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:orientation="horizontal">
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/ok"
                            android:id="@+id/a1"
                            android:contentDescription="correcta"/>
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/falso"
                            android:id="@+id/a2"
                            android:contentDescription="incorrecta"/>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:orientation="horizontal">
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/ok"
                            android:id="@+id/b1"
                            android:contentDescription="correcta"/>
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/falso"
                            android:id="@+id/b2"
                            android:contentDescription="incorrecta"/>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:orientation="horizontal">
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/ok"
                            android:id="@+id/c1"
                            android:contentDescription="correcta"/>
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/falso"
                            android:id="@+id/c2"
                            android:contentDescription="incorrecta"/>
                    </LinearLayout>
                    <LinearLayout
                        android:layout_
                        android:layout_
                        android:orientation="horizontal">
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/ok"
                            android:id="@+id/d1"
                            android:contentDescription="correcta"/>
                        <ImageView
                            android:layout_
                            android:layout_
                            android:background="@drawable/falso"
                            android:id="@+id/d2"
                            android:contentDescription="incorrecta"/>
                    </LinearLayout>
                </LinearLayout>
            </LinearLayout>


            <LinearLayout
                android:layout_
                android:layout_
                android:orientation="vertical">
                    <Button
                        android:layout_
                        android:layout_
                        android:text="@string/responder"
                        android:id="@+id/responder"
                        android:layout_marginBottom="5dp"
                        android:layout_marginTop="5dp"
                        android:layout_marginLeft="5dp"
                        android:layout_marginRight="5dp"
                        tools:ignore="ButtonStyle"
                        android:textStyle="bold"/>
                    <Button
                        android:layout_
                        android:layout_
                        android:text="@string/siguiente"
                        android:id="@+id/siguiente"
                        android:elevation="0dp"
                        android:layout_marginBottom="5dp"
                        android:layout_marginLeft="5dp"
                        android:layout_marginRight="5dp"
                        android:layout_marginTop="5dp"
                        tools:ignore="ButtonStyle,UnusedAttribute"
                        android:textStyle="bold"/>
                    <Button
                        android:layout_
                        android:layout_
                        android:text="@string/finalizar"
                        android:id="@+id/finalizar"
                        android:elevation="0dp"
                        android:layout_marginBottom="5dp"
                        android:layout_marginLeft="5dp"
                        android:layout_marginRight="5dp"
                        android:layout_marginTop="5dp"
                        tools:ignore="ButtonStyle,UnusedAttribute"
                        android:textStyle="bold"/>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

在Java类中我没有做任何特别的事情,我上传了工具栏。

public class QuizGame extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz_game);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#000000"));
        toolbar.setBackground(colorDrawable);
        toolbar.setTitleTextColor(Color.WHITE);
//The class is long, it has 400 sentences.

在设计视图中一切看起来都正确,我没有看到布局与工具栏重叠:

标签树看起来也不错。

但启动活动时,在工具栏的右上方会出现一个白框。就好像工具栏后面有一个LinearLayout:

我怎样才能修改 xml 文件,这样就不会发生这种情况,并且我可以看到孔工具栏?

【问题讨论】:

【参考方案1】:

由于我不知道你的工具栏样式@style/ToolbarTheme和任何动作,我在工具栏上没有设置任何样式和动作的情况下测试它,没有问题。这可能是您的ToolbarTheme 的原因。

【讨论】:

不是这样的。我删除了 xml 标签中的样式,它也是一样的。我不知道为什么,按钮正在按下整个布局。给按钮一个高度并删除android:elevation="0dp"解决了这个问题。 @Universal_learner 好的,无论如何你解决了这个问题,这很好。 :)【参考方案2】:

我不知道为什么,但是按钮将整个布局向上推。抑制android:elevation="0dp",抑制边距并为按钮设置高度解决了这个问题。

<Button
    android:layout_
    android:layout_
    android:text="@string/responder"
    android:id="@+id/responder"/>
<Button
    android:layout_
    android:layout_
    android:text="@string/siguiente"
    android:id="@+id/siguiente"/>
<Button
    android:layout_
    android:layout_
    android:text="@string/finalizar"
    android:id="@+id/finalizar"/>

工具栏不再重叠。

【讨论】:

以上是关于xml Android 布局的问题。布局与工具栏重叠的主要内容,如果未能解决你的问题,请参考以下文章

我们有任何工具可以将 Android xml 布局转换为 .java 文件吗?

xml Android工具栏布局。

xml [使布局覆盖任务栏]在折叠工具栏布局中,必须添加所有元素:android:fitsSystemWindows =“t

重命名布局元素的 ID 不会重命名 viewBinding 引用

什么是工具:片段 xml 文件中的布局?

Xamarin.Android之布局文件智能提示问题