ActionBar在Android KitKat上不可见

时间:2015-10-12 04:45:29

标签: android xml android-layout

我正在尝试使用android设计库实现工具栏。输出在Lollipop和Marshmallow设备上按预期工作,但它没有在Kitkat设备上显示ToolBar。

我在堆栈溢出(here_1here_2)上看过类似的帖子,并试图实现列出的更改。但是,我无法在Kit Kat设备上使用它。

我在build.gradle文件中包含以下内容:

compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:cardview-v7:23.0.1'

这是我的main_Activity.xml文件:

<android.support.v4.widget.DrawerLayout 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/drawer_layout"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:theme="@style/Theme.MyMovie"
    tools:context=".MainActivity">


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


    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/drawer_view"/>

</android.support.v4.widget.DrawerLayout>

这是我的include_grid_viewpager.xml文件:

<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/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Chalisa">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay"
        >

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar1"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            />

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

    <GridView
        android:id="@+id/gridview1"
        android:columnWidth="80dp"
        android:paddingTop="?attr/actionBarSize"
        android:gravity="center_horizontal"
        android:background="@drawable/stroke"
        android:numColumns="3"
        android:stretchMode="spacingWidthUniform"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </GridView>

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

这是我的style.xml文件

<resources>

    <style name="Theme.Mytheme" parent="Base.Theme.DesignDemo">
    </style>

    <style name="Base.Theme.DesignDemo" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#FF0000</item>
        <item name="colorPrimaryDark">#FC1501</item>
        <item name="colorAccent">#FF0000</item>
        <item name="android:windowBackground">@color/window_background</item>
        <item name="android:textSize">16sp</item>
    </style>

    <style name="Widget.CardContent" parent="android:Widget">
        <item name="android:paddingLeft">16dp</item>
        <item name="android:paddingRight">16dp</item>
        <item name="android:paddingTop">24dp</item>
        <item name="android:paddingBottom">24dp</item>
        <item name="android:orientation">vertical</item>
    </style>

</resources>

这是我的清单文件:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="aps.com.nap" >

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.Mytheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".DetailData"
            android:parentActivityName=".MainActivity"
            android:screenOrientation="portrait"/>
        <activity android:name=".myDetail"
            android:parentActivityName=".MainActivity"
            android:screenOrientation="portrait"/>

    </application>

</manifest>

我花了4个多小时挖掘互联网和堆栈溢出响应。我相信我在XML中犯了一些小错误。

请您尽快提供有助于我最快解决此问题的任何信息。

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

我必须按如下方式更改我的include_grid_viewpager.xml才能使其正常工作。 将网格移动到AppBar布局中,使其位于操作栏下方。网格视图覆盖了操作栏。

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        >

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar1"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_scrollFlags="scroll|enterAlways"
            />

        <GridView
            android:id="@+id/gridview1"
            android:columnWidth="110dp"
            android:gravity="center_horizontal"
            android:background="@drawable/stroke"
            android:numColumns="3"
            android:stretchMode="spacingWidthUniform"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </GridView>

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



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

感谢您的支持。

答案 1 :(得分:1)

我遇到了同样的问题。在我的例子中,在AppBarLayout之前附加虚拟视图解决了问题。

以下是我自己的案例:

[前]

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/eya_fl_activity_viewer_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ProgressBar
            android:id="@+id/eya_pb_activity_base_viewer"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="?attr/actionBarSize"
            android:visibility="gone" />

    </FrameLayout>

    <android.support.design.widget.AppBarLayout
        android:id="@+id/eya_abl_activity_base_viewer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

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

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

    <!-- Other views... -->

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

[后]

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Dummy view -->
    <FrameLayout
        android:id="@+id/eya_fl_activity_viewer_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <android.support.design.widget.AppBarLayout
        android:id="@+id/eya_abl_activity_base_viewer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

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

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

    <!-- Other views... -->

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

答案 2 :(得分:0)

请查看您活动的onCreate()内部,是否已拨打以下内容?

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar1);
setSupportActionBar(toolbar);

此外,请发布AndroidManifest.xml以获取更多信息。