为什么我的视图在Android Studio布局编辑器中是重叠的状态栏

时间:2018-01-16 21:36:48

标签: android android-layout android-studio-3.0

现在,我在布局编辑器中制作的所有布局都是这样的。我不记得以前这是否正常,但这有点烦人。

enter image description here

如您所见,ImageView和TextView位于状态栏上方。 更糟糕的是ListView是最重要的,即使我已经设置:

android:layout_below="@id/txt_title"

观点的最终结果如我所料:

[Imageview][TextView]
[ List View         ]    

但编辑器中的这个错误(?)让我烦恼。

这是布局:

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


    <ImageView
        android:id="@+id/img_logo"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="@color/white"
        app:ico_color="@color/iconColor"
        app:ico_icon="cmd-download"
        app:ico_size="24dp"

        />


    <TextView
        android:id="@+id/txt_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@id/img_logo"
        android:gravity="start|center_vertical"
        android:paddingEnd="8dp"
        android:paddingStart="8dp"
        android:text="@string/title_favorite_beers"
        android:textColor="@color/white"
        android:textSize="15sp"


        />

    <ListView
        android:id="@+id/widget_list_collection"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_below="@id/txt_title"
        android:background="@color/white"
        android:padding="8dp"

        />


</RelativeLayout>

- 编辑 - 我已将布局更改为:

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


    <ImageButton
        android:id="@+id/widget_image_logo"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="@color/iconColor"
        android:foreground="?android:selectableItemBackground"
        android:foregroundGravity="center_vertical"
        android:src="@mipmap/ic_beer_launch"
        />


    <TextView
        android:id="@+id/txt_title"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_alignParentTop="true"
        android:layout_toEndOf="@id/widget_image_logo"
        android:gravity="start|center_vertical"
        android:paddingEnd="8dp"
        android:paddingStart="8dp"
        android:text="@string/title_favorite_beers"
        android:textColor="@color/white"
        android:textSize="15sp"
        android:textStyle="bold"
        tools:text="Favorite Beers"


        />

    <ListView
        android:id="@+id/widget_list_collection"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:layout_below="@id/txt_title"
        android:background="@color/white"
        android:padding="8dp"

        />


</RelativeLayout>

结果是:

enter image description here

my styles.xml:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/window_background</item>
        <item name="android:dialogTheme">@style/TitledDialog</item>
    </style>

    <style name="TitledDialog" parent="@style/Theme.AppCompat.Light.Dialog">
        <item name="android:windowNoTitle">false</item>
    </style>

    <style name="AppTheme.PrimaryButton" parent="Base.Widget.AppCompat.Button">
        <item name="android:layout_height">@dimen/button_height</item>
        <item name="android:padding">@dimen/button_padding</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:background">?attr/colorAccent</item>
        <item name="android:foreground">?attr/selectableItemBackground</item>
        <item name="android:textColor">@android:color/white</item>
    </style>

    <style name="AppTheme.Toolbar" parent="Theme.AppCompat.Light">
        <item name="android:textColorPrimary">@android:color/white</item>
        <item name="android:textColorSecondary">@android:color/white</item>
        <item name="actionMenuTextColor">@android:color/white</item>
    </style>

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>

    <style name="CollapsedToolbar" parent="@android:style/TextAppearance.Medium">
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textStyle">normal</item>
    </style>

    <style name="ExpandedToolbar" parent="@android:style/TextAppearance.Medium">
        <item name="android:textColor">@android:color/transparent</item>
    </style>

    <string name="movie_details">Movie Details</string>
</resources>

- 编辑 -

编辑器正在覆盖此项目的所有视图中的状态栏。正如您在此活动中看到的那样,在root中使用CoordinatorLayout:

enter image description here

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/layout_search"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.github.alexpfx.udacity.beercollection.search.SearchActivity"
    >

    <include layout="@layout/layout_toolbar"/>

    <include layout="@layout/content_search_activity"/>


</android.support.design.widget.CoordinatorLayout>

1 个答案:

答案 0 :(得分:2)

我在布局中看到的问题很少

  1. ImageView类没有以下属性:

    更新:根据评论,以下属性正常,因为操作系统正在使用Android-Iconics

    app:ico_color="@color/iconColor" app:ico_icon="cmd-download" app:ico_size="24dp"

  2. 您正在将列表视图限制在文本视图下,但根据您发布的图像,您的文本视图似乎没有内容,因此它与您的图像视图重叠。您可以通过将视图限制在具有更高高度的视图下来解决此问题,例如您的图片视图在发布的示例中具有更大的高度。

  3. 似乎你想要的东西是:

    [ImageView的] [TextView的]

    [列表视图]

    我已将您的代码修改为以下内容,以提供所需的结果。

    注意:我已经更改了一些值(例如颜色,背景,文本等),您需要相应地添加它们。

    最后,确保您的主题不负责导致布局与状态栏重叠。布局编辑器也改进了android studio版本。确保你有最新版本的android studio。以下图片来自Android Studio 3.0.1

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:app="http://schemas.android.com/apk/res-auto"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/red"
                    android:fitsSystemWindows="true"
    >
    
    
        <ImageView
                android:id="@+id/img_logo"
                android:layout_width="48dp"
                android:layout_height="48dp"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:background="@color/red"
                android:src="@android:drawable/stat_sys_download"
        />
    
    
        <TextView
                android:id="@+id/txt_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_toEndOf="@id/img_logo"
                android:gravity="start|center_vertical"
                android:paddingEnd="8dp"
                android:paddingStart="8dp"
                android:text="test"
                android:textColor="@color/white"
                android:textSize="15sp"
    
    
        />
    
        <ListView
                android:id="@+id/widget_list_collection"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentBottom="true"
                android:layout_alignParentStart="true"
                android:layout_below="@id/img_logo"
                android:background="@color/white"
                android:padding="8dp"
    
        />
    
    
    </RelativeLayout>
    

    demo