AppBarLayout 和工具栏的新 Android 设计库错误
New Android Design Library bug with AppBarLayout and Toolbar
我正在使用基于此示例的新 Android 设计库 chrisbanes/cheesesquare in github and here
我有 运行 这个例子,但我在 CheeseDetailActivity 中的工具栏上遇到了问题。工具栏未按应有的方式显示。看看下面的图片:
在第一张图片中,您可以看到工具栏显示不正确。
在第二张图片中,您可以看到工具栏显示正确,但通知栏是白色的。发生这种情况是因为我从 actiivty_detail.xml android:fitsSystemWindows="true"
中删除了 android.support.design.widget.CoordinatorLayout
我认为 fitsSystemWindows
应该是正确的,问题与 android.support.design.widget.AppBarLayout
有关,但我不知道如何解决这个问题。我尝试使用与 notificationBar
相同高度的 marginTop
但它没有用。
欢迎任何建议:)
这是activity_detail.xml
的一部分:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp">
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
看起来这是 com.android.support:design:22.2.0
中的错误。
它将被修复,它被标记为未来版本。所以让我们希望它会很快。
问题链接:
https://code.google.com/p/android/issues/detail?id=175240
和 https://code.google.com/p/android/issues/detail?id=175069
在 windowActionBar 和 windowNoTitle 样式中遇到了同样的问题并决定了我的问题。
<style name="AppTheme.base" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<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="windowNoTitle">true</item>
</style>
下面是 API21 的一些解决方法:
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) {
marginResult = 0;
int resourceId = getResources().getIdentifier(getString(R.string.identifier_status_bar_height), getString(R.string.identifier_dimen), getString(R.string.identifier_android));
if (resourceId > 0) {
marginResult = getResources().getDimensionPixelSize(resourceId)*2;
}
CollapsingToolbarLayout.LayoutParams params = (CollapsingToolbarLayout.LayoutParams) mToolbar.getLayoutParams();
params.topMargin -= marginResult;
mToolbar.setLayoutParams(params);}
用 build.gradle 文件中的新版本 Design Library 更改 app文件夹如:
compile 'com.android.support:design:22.2.1'
我得到如下输出:
它会帮助你。
谢谢 :)
我有同样的问题,我的工具栏在大于 21 的 API 级别上显示错误。我使用 android.support.v7.widget.Toolbar 作为 supportActionBar() 并且以下内容在片段中, 看图片:
on aplication start, toolbar is displaying wrong
和 when i colapse android.support.design.widget.CollapsingToolbarLayout, the picture is not hidden completely
当我将 android:fitsSystemWindows="true" 属性添加到工具栏所在的视图的根元素时,我解决了这个问题。
现在:
toolbar is displaying normal 和
picture is hidden completely
我正在使用基于此示例的新 Android 设计库 chrisbanes/cheesesquare in github and here
我有 运行 这个例子,但我在 CheeseDetailActivity 中的工具栏上遇到了问题。工具栏未按应有的方式显示。看看下面的图片:
在第一张图片中,您可以看到工具栏显示不正确。
在第二张图片中,您可以看到工具栏显示正确,但通知栏是白色的。发生这种情况是因为我从 actiivty_detail.xml android:fitsSystemWindows="true"
中删除了 android.support.design.widget.CoordinatorLayout
我认为 fitsSystemWindows
应该是正确的,问题与 android.support.design.widget.AppBarLayout
有关,但我不知道如何解决这个问题。我尝试使用与 notificationBar
相同高度的 marginTop
但它没有用。
欢迎任何建议:)
这是activity_detail.xml
的一部分:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp">
<ImageView
android:id="@+id/backdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_collapseMode="pin" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
看起来这是 com.android.support:design:22.2.0
中的错误。
它将被修复,它被标记为未来版本。所以让我们希望它会很快。
问题链接:
https://code.google.com/p/android/issues/detail?id=175240
和 https://code.google.com/p/android/issues/detail?id=175069
在 windowActionBar 和 windowNoTitle 样式中遇到了同样的问题并决定了我的问题。
<style name="AppTheme.base" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<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="windowNoTitle">true</item>
</style>
下面是 API21 的一些解决方法:
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) {
marginResult = 0;
int resourceId = getResources().getIdentifier(getString(R.string.identifier_status_bar_height), getString(R.string.identifier_dimen), getString(R.string.identifier_android));
if (resourceId > 0) {
marginResult = getResources().getDimensionPixelSize(resourceId)*2;
}
CollapsingToolbarLayout.LayoutParams params = (CollapsingToolbarLayout.LayoutParams) mToolbar.getLayoutParams();
params.topMargin -= marginResult;
mToolbar.setLayoutParams(params);}
用 build.gradle 文件中的新版本 Design Library 更改 app文件夹如:
compile 'com.android.support:design:22.2.1'
我得到如下输出:
它会帮助你。
谢谢 :)
我有同样的问题,我的工具栏在大于 21 的 API 级别上显示错误。我使用 android.support.v7.widget.Toolbar 作为 supportActionBar() 并且以下内容在片段中, 看图片: on aplication start, toolbar is displaying wrong 和 when i colapse android.support.design.widget.CollapsingToolbarLayout, the picture is not hidden completely
当我将 android:fitsSystemWindows="true" 属性添加到工具栏所在的视图的根元素时,我解决了这个问题。
现在: toolbar is displaying normal 和 picture is hidden completely