You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:Toolbar覆盖ListView问题求助(附布局代码)

解决Toolbar覆盖ListView的问题

嘿,我来帮你搞定这个Toolbar盖住ListView的问题~

问题根源

你当前用的是RelativeLayout作为根布局,这个布局的子控件默认都是从左上角(布局原点)开始排列的,所以ListView会直接和Toolbar重叠在一起。而你尝试的app:layout_behavior="@string/appbar_scrolling_view_behavior"是CoordinatorLayout专属的属性,在RelativeLayout里根本不会生效,这就是为啥加了也没效果的原因。

解决方案一:给ListView添加RelativeLayout定位属性(最简单快速)

直接在ListView的布局代码里加上android:layout_below="@id/my_toolbar",让它固定在Toolbar的下方,这样就不会被覆盖了。修改后的View.xml里的ListView部分如下:

<ListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tratamientoview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:layout_below="@id/my_toolbar"> <!-- 新增这一行 -->
</ListView>

解决方案二:改用官方推荐的CoordinatorLayout结构(更适合滚动场景)

如果你的页面需要Toolbar和ListView有联动滚动(比如滚动时Toolbar隐藏/显示),推荐换成CoordinatorLayout + AppBarLayout的组合,这是Material Design里的标准布局方式,也能彻底解决重叠问题。修改后的View.xml大概是这样:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.ismael.fisiopia.views.TratamientosActivity">

    <!-- AppBar包裹Toolbar -->
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <include layout="@layout/toolbar" />
    </android.support.design.widget.AppBarLayout>

    <!-- 这里用app:layout_behavior就生效了 -->
    <ListView 
        android:id="@+id/tratamientoview" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    </ListView>

    <!-- FloatingActionButton和ProgressBar保持不变 -->
    <android.support.design.widget.FloatingActionButton 
        android:id="@+id/btnAddTrat" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="end|bottom" 
        android:layout_marginBottom="36dp" 
        android:layout_marginRight="36dp" 
        android:clickable="true" />

    <RelativeLayout 
        android:id="@+id/progressLayoutTrat" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:background="#B0000000" 
        android:visibility="gone">
        <ProgressBar 
            android:id="@+id/progressBarTratamientos" 
            style="?android:attr/progressBarStyleLarge" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:layout_marginLeft="13dp" 
            android:layout_marginStart="13dp" 
            android:paddingTop="250dp" 
            android:visibility="gone" />
    </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

关于你的ProgressBar布局

那个嵌套在RelativeLayout里的ProgressBar布局没问题,它是全屏覆盖的样式,只要在代码里控制progressLayoutTrat的visibility属性就能正常显示加载遮罩,不用修改布局结构。

内容的提问来源于stack exchange,提问作者Isma9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:15:27