我们在开发中用到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>
最后运行结果如下,是不是很简单
小白一个,如有什么不对的地方,欢迎指出。