我想在我的应用中使用透明StatusBar
和NavigationBar
。因此我用以下方法实现了这个目的:
值/ 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>
但是,当它在Lollipop
或Kitkat
设备上运行时,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" />
但是,它变得更糟
修改
我对我的问题给出了部分答案。这可能有助于更多地了解我想要的东西。
答案 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
,例如
但是,我希望这样的事情具有透明导航
{{0如果我找不到确切的答案,我会和Solution 2
一起去。