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:fitsSystemWindows =“t