1.弹出菜单位置改变

默认的ToolBar在点击更多按钮是弹出的菜单是下面截图的样子:

很显然,菜单已经把ToolBar挡住了,如何解决呢?采用主题覆盖即可:

<style name="ToolbarPopupTheme" parent="@style/ThemeOverlay.AppCompat.Dark">
        <!--<item name="android:colorBackground">#000000</item> 也可以设置背景色以及menu中的其他属性-->
        <item name="actionOverflowMenuStyle">@style/OverflowMenuStyle</item> 
    </style>

    <style name="OverflowMenuStyle" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
        <item name="overlapAnchor">false</item>  <!--设置不覆盖锚点-->
    </style>

然后在toolbar中设置app:popupTheme:

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:actionBarSize"
        android:background="?attr/colorPrimary"
        app:navigationIcon="@mipmap/back"
        app:popupTheme="@style/ToolbarPopupTheme">
</android.support.v7.widget.Toolbar>

注意:这种方法在android7.0上不生效。

2.Android statusbar 透明后 toolbar与之重叠问题的解决方法

摘抄自Android statusbar 透明后 toolbar与之重叠问题的解决方法

之前想要给statusbar和toolbar实现这样的效果:

为使得statusbar变为透明,在自定义theme中给statusbar添加了以下属性:

<item name="android:windowTranslucentStatus">true</item>

可是在statusbar变透明后界面却变成下图这个样子:(即toolbar悬浮在statusbar之后)

为了说明情况,我用另一个更明显的界面来解释:

起初我简单粗暴的为toolbar加了一个marginTop属性,强制向下移动20多个dp,虽热表面上可以解决这个问题,可是众所周知,通过固定的dp数来布局页面是不合理的,因为不同大小手机的分辨率不同,statusbar的高度也有所不同。这样简单地加margin很有可能导致statusbar和toolbar出现间隙或重叠。

解决方法:

查阅资料后发现一个简单又科学的属性:

<!--<item name="android:layout_marginTop">22dp</item>-->
<item name="android:fitsSystemWindows">true</item>

我们把marginTop注释掉,选择将fitsSystemWindows属性设置为true,fitsSystemWindows属性为屏幕自动加入padding,使得所有内容都可以显示在主屏上,而避免被statusbar所掩盖,加上这个属性后顺利解决该问题:

3.去除ToolBar默认的标题

getSupportActionBar().setDisplayShowTitleEnabled(false);

results matching ""

    No results matching ""