【问题标题】:CollapsingToolbarLayout setTitle() not working anymoreCollapsingToolbarLayout setTitle() 不再工作
【发布时间】:2015-11-11 11:20:49
【问题描述】:

来自CollapsingToolbarLayout 的setTitle() 方法已经有一些错误(比如只在滚动后显示,在v22.2.1 中修复)。

今天我更新到v23.0.0,它根本不起作用,就像没有显示标题一样。通过延迟多次调用它,我可以看到有时标题在那里,但它确实不可靠(例如,您切换到另一个片段,然后返回第一个片段,并且不再有标题)。

我发现有一个新属性app:titleEnabled 或CollapsingToolbarLayout.setTitleEnabled(boolean)。我已将两者都设置为 true,但实际上并没有改变任何东西。

你们中有人遇到过同样的行为吗?

我想知道市场上有多少应用程序真正在使用这个设计库,它从第一个版本开始就充满了错误并且没有变得更好。

编辑

通过进一步测试,它似乎(我不是 100% 确定)已连接到新的 AppBarLayout.setExpanded() api。

如果我打电话:

collapsingToolbar.setTitle("title");

它有效,但如果我打电话

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, true);
//OR
appbarLayout.setExpanded(true, true);
collapsingToolbar.setTitle("title");

它没有 - 没有显示标题。与setExpanded(false, true) 相同,即。 e.试图折叠工具栏。

Edit2(2015 年 9 月)

嗯,不。即使我从未致电abl.setExpanded() 或app:expanded,问题仍然存在。此外,我们现在在 v23.0.1 上,这仍然没有得到修复。看起来我们中只有少数人正在经历它,因为我在这里或官方错误列表中都找不到任何东西。我提交了一个错误here。

【问题讨论】:

  • 嗨,如果您在此处发布相关代码(Java 和 XML),我或其他任何人都可以为您提供帮助。到目前为止,我一直在使用 CollapsingToolbarLayout 没有任何问题。
  • 我在使用 24.0.1 时遇到这个问题 CoordinatorLayout 应该从一般设计隐喻中解散。与他一起工作的痛苦是$$。我已经在 android 开发 3 年了,我无法理解这个 POS。

标签: android android-support-library android-design-library


【解决方案1】:

标题不显示是因为 AppBarLayout 的布局高度太小。我的高度为 110dp,这在 v22.2.1 中有效。升级到 v23.0.0 后,我必须将高度至少更改为 125dp 才能显示标题。无需使用新的属性或方法调用。这是我的布局:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_height="125dp"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:expandedTitleTextAppearance="@style/ExpandedAppBarTitle"
        app:expandedTitleMarginStart="14dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_height="?attr/actionBarSize"
            android:layout_width="match_parent"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView android:id="@android:id/list"
                                        xmlns:android="http://schemas.android.com/apk/res/android"
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent"
                                        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/addbtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    app:borderWidth="0dp"
    android:layout_margin="@dimen/fab_margin"
    android:src="@drawable/ic_add" />

【讨论】:

  • 如果您不想要更高的栏,您可以将 CollapsingToolbarLayout 的 expandedTitleMarginTop 设置为某个值
  • 我尝试将高度设置为 200dp,但还是不行
  • 我在使用 v24.0.2 时仍然遇到这个问题
  • 这并不能解决我的问题。仅当我将高度设置得足够大以使其实际上可以展开和折叠时才有效,例如 300dp。
【解决方案2】:

我在我的应用中尝试了一些组合:

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, true); // works

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(true, false); // works

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(false, true); // works

collapsingToolbar.setTitle("title");
appbarLayout.setExpanded(false, false); // doesn't show title

我在片段的 onCreateView() 中调用了这些方法。 AppBarLayout 默认展开,可以通过布局中的 XML 进行更改,尽管当我将其定义为不以 XML 展开时,它也不会显示标题。奇怪的东西......无论如何,如果你知道我还能如何提供进一步帮助,请告诉我。

【讨论】:

  • 我不确定它是否与 setExpanded 相关联。我试过只使用 collapsingToolbar.setTitle("title");它的工作原理是 10 的 9 倍(这不好)。
  • 在动画中添加“true”显然可以修复它。在我看来,这是由于折叠弄乱了标题/工具栏元素的 z-index 并在它之上,而动画强制以正确的顺序绘制所有内容......无论哪种方式,很棒的发现,我现在也在我的应用程序中使用它
  • 更新:在 xml 中设置 app:expanded="false" 会使标题不可见,除非您以编程方式展开和重新折叠元素......这很糟糕
  • @Mdk :我在这里提交了一个问题:code.google.com/p/android/issues/…
  • 请注意,即使 从不 使用 app:expanded 或 abl.setExpanded(),我也会遇到此问题。我同意 z-index 的东西。
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 2011-12-20
  • 2015-11-11
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2021-06-04
  • 2015-12-22
相关资源
最近更新 更多