ToolBar在Android

时间:2015-04-24 11:59:24

标签: android toolbar

我想在我的应用中使用透明StatusBarNavigationBar。因此我用以下方法实现了这个目的:

值/ style.xml

<style name="AppBaseTheme" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
</style>

<style name="AppTheme" parent="AppBaseTheme"></style>


值-V19 / style.xml

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

Activity on Lollipop

但是,当它在LollipopKitkat设备上运行时,ToolBar看起来比正常大小大得多。怎么避免这个?
这是ToolBar代码。

<android.support.v7.widget.Toolbar
    android:id="@+id/tbHomeToolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="?attr/colorPrimary"
    android:fitsSystemWindows="true"
    android:minHeight="?attr/actionBarSize"
    app:navigationContentDescription="@string/app_name"
    app:navigationIcon="@drawable/ic_launcher" />


提前致谢

修改
我更改了ToolBar

的某些属性
<android.support.v7.widget.Toolbar
    android:id="@+id/tbHomeToolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentTop="true"
    android:background="?attr/colorPrimary"
    android:fitsSystemWindows="true"
    app:navigationContentDescription="@string/app_name"
    app:navigationIcon="@drawable/ic_launcher" />


但是,它变得更糟enter image description here

修改
我对我的问题给出了部分答案。这可能有助于更多地了解我想要的东西。

2 个答案:

答案 0 :(得分:2)

不使用?attr/actionBarSize minHeight属性,而是将其用于layout_height属性,请参阅以下代码。

<android.support.v7.widget.Toolbar
    android:id="@+id/tbHomeToolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:layout_alignParentTop="true"
    android:background="?attr/colorPrimary"
    android:fitsSystemWindows="true"   
    app:navigationContentDescription="@string/app_name"
    app:navigationIcon="@drawable/ic_launcher" />

答案 1 :(得分:0)

我正在回答我自己的问题,因为我找不到我想要的解决方案。

解决方案1:
只需删除

即可
<item name="android:windowTranslucentNavigation">true</item>

来自values-v19/styles.xml它的确有效。
但是,这不是我想要的。

解决方案2:
也可以使用FrameLayout并将android:fitsSystemWindows="true"FrameLayout一起使用,而不是ToolBar

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res/com.sparrow.chargeup"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:fitsSystemWindows="true"
    tools:context="com.sparrow.chargeup.HomeActivity" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/tbHomeToolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        app:navigationContentDescription="@string/app_name"
        app:navigationIcon="@drawable/ic_launcher" />

</FrameLayout>

但是,它提供完全透明的StatusBar,例如enter image description here

但是,我希望这样的事情具有透明导航

{{0如果我找不到确切的答案,我会和Solution 2一起去。