【问题标题】:collapsingToolbarLayout set title only when collapsedcollapsingToolbarLayout 仅在折叠时设置标题
【发布时间】:2015-11-16 07:50:32
【问题描述】:

我试图设置 collapsingToolbarLayout 标题只有在它被折叠时

为此我设置了:

app:expandedTitleTextAppearance="@android:color/transparent"

而且效果很好。

但在 4.2.2 应用程序崩溃并出现以下日志

STACK_TRACE

java.lang.IllegalArgumentException: width and height must be > 0
    at android.graphics.Bitmap.createBitmap(Bitmap.java:687)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:666)
    at android.graphics.Bitmap.createBitmap(Bitmap.java:633)
    at android.support.design.widget.CollapsingTextHelper.ensureExpandedTexture(CollapsingTextHelper.java:405)
    at android.support.design.widget.CollapsingTextHelper.setInterpolatedTextSize(CollapsingTextHelper.java:382)
    at android.support.design.widget.CollapsingTextHelper.calculateOffsets(CollapsingTextHelper.java:227)
    at android.support.design.widget.CollapsingTextHelper.setExpansionFraction(CollapsingTextHelper.java:203)
    at android.support.design.widget.CollapsingToolbarLayout$OffsetUpdateListener.onOffsetChanged(CollapsingToolbarLayout.java:754)
    at android.support.design.widget.AppBarLayout$Behavior.dispatchOffsetUpdates(AppBarLayout.java:851)
    at android.support.design.widget.AppBarLayout$Behavior.setAppBarTopBottomOffset(AppBarLayout.java:834)
    at android.support.design.widget.AppBarLayout$Behavior.scroll(AppBarLayout.java:793)
    at android.support.design.widget.AppBarLayout$Behavior.onNestedScroll(AppBarLayout.java:644)
    at android.support.design.widget.AppBarLayout$Behavior.onNestedScroll(AppBarLayout.java:583)
    at android.support.design.widget.CoordinatorLayout.onNestedScroll(CoordinatorLayout.java:1428)
    at android.support.v4.view.eh.a(ViewParentCompat.java:97)
    at android.support.v4.view.ec.a(ViewParentCompat.java:330)
    at android.support.v4.view.bk.a(NestedScrollingChildHelper.java:162)
    at android.support.v7.widget.RecyclerView.dispatchNestedScroll(RecyclerView.java:8306)
    at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1387)
    at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2209)

请建议我正确的实现方法。

是否有任何Listener 来检测collapsingToolbarLayout 是否折叠,以便我可以隐藏/取消隐藏ToolBar 标题...

是否可以将collapsingToolbarLayout 标题设置为与我想要的另一个视图对齐...

【问题讨论】:

标签: android listener toolbar android-collapsingtoolbarlayout


【解决方案1】:

最终CollapsingToolbarLayout如下:-

collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
collapsingToolbarLayout.setTitle("Create Delivery Personnel");
collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(R.color.transperent));
collapsingToolbarLayout.setCollapsedTitleTextColor(Color.rgb(0, 0, 0));

【讨论】:

【解决方案2】:

您可以将侦听器添加到 AppBar,这样无论是否折叠都可以收听。

final Toolbar tool = (Toolbar)findViewById(R.id.toolbar);
CollapsingToolbarLayout c = (CollapsingToolbarLayout)findViewById(R.id.collapsing_toolbar);
AppBarLayout appbar = (AppBarLayout)findViewById(R.id.app_bar_layout);
tool.setTitle("");
setSupportActionBar(tool);
c.setTitleEnabled(false);

appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {

    boolean isVisible = true;
    int scrollRange = -1;
    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        if (scrollRange == -1) {
            scrollRange = appBarLayout.getTotalScrollRange();
        }
        if (scrollRange + verticalOffset == 0) {
           tool.setTitle("Title");
            isVisible = true;
        } else if(isVisible) {
            tool.setTitle("");
            isVisible = false;
        }
    }
});

【讨论】:

    【解决方案3】:

    我今天发现了同样的问题。我终于通过在xml上定义它来解决它

    app:expandedTitleTextAppearance="@android:color/transparent"
    

    另外,以编程方式检查 pre-kitkat

    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        mCollapsingToolbar.setExpandedTitleTextAppearance(R.style.TransparentText)
    };
    

    TransparentText 样式在哪里

    <style name="TransparentText" parent="@android:style/TextAppearance">
           <item name="android:textColor">#00000000</item>
    </style>
    

    我知道这已经很晚了,但我希望这可以帮助其他人:)

    【讨论】:

    【解决方案4】:

    我发现了一种解决方法:

    CollapsingToolbar 上,设置:

    app:expandedTitleGravity="top"
    app:expandedTitleTextAppearance="@style/PosterText"
    

    并在您的样式中添加:

    <style name="PosterText" parent="TextAppearance.Booksy.Headline5">
        <item name="android:textColor">#00000000</item>
    </style>
    

    这将为您提供更少的混乱体验,因为展开后的标题仍位于顶部。

    实现此目的的另一种方法是设置expandedTitleGravity,而不是设置app:titleCollapseMode="fade",但这目前存在一个问题,即它不尊重扩展标题的透明度,只是将其变为不透明的颜色(黑色在以上情况)。

    如果我能解决它,我会告诉你。

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      相关资源
      最近更新 更多