安卓开发菜单挡住标题栏解决办法

我们在开发中用到menu的时候,系统默认的位置都是挡住了标题栏,严重影响了用户体验,如下图

这里写图片描述

那么我们应该如何解决这个问题呢,其实也是很简单,就是自定义样式,话不多说,直接上代码。
首先在style文件添加下面这句样式代码

//menu样式
    <style name="Theme.ToolBar.Menu" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- 设置-弹窗的背景-颜色-->
        <item name="android:colorBackground">@color/colorPrimary</item>
        <!-- 字体的颜色-->
        <item name="android:textColor">@color/white_normal</item>
        <!-- 字体大小-->
        <item name="android:textSize">18sp</item>
        <!-- 用于替换菜单的三个小白点,换成自已的图片-->
        <item name="actionOverflowButtonStyle">@style/ActionButton.Overflow.Menu</item>
        <!--用于控制menu弹出的位置,位于toolbar的下面,而不是上面-->
        <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item>
    </style>

    <style name="ActionButton.Overflow.Menu" parent="android:style/Widget.Holo.Light.ActionButton.Overflow">
        <item name="android:src">@drawable/_icon</item>

    </style>
    <!--把该属性改为false即可使menu位置位于toolbar之下-->
    <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
        <item name="overlapAnchor">false</item>
    </style>

接下来在布局文件对android.support.v7.widget.Toolbar熟悉进行修改就行了,把android:background和
app:popupTheme属性去掉,添加 android:theme=”@style/Theme.ToolBar.Menu”。

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:theme="@style/Theme.ToolBar.Menu"/>
            <!--android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />-->


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

最后运行结果如下,是不是很简单

这里写图片描述

小白一个,如有什么不对的地方,欢迎指出。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值