Android सामग्री डिज़ाइन-CollapsingToolbarLayout के ढहने के बाद टूलबार की पृष्ठभूमि का रंग कैसे बदलें




material-design android-collapsingtoolbarlayout (4)

आप एक AppBarLayout के ऑफसेट श्रोता का उपयोग कर सकते हैं और इच्छित व्यवहार के अनुसार CollapsingTollbar विशेषताओं को बदल सकते हैं।

appBarLayout.addOnOffsetChangedListener { _, verticalOffSet ->
            if (Math.abs(verticalOffSet) == appBarLayout.totalScrollRange) {
                //Collapsed
                toolBar.setBackgroundDrawable(ContextCompat.getDrawable(this,
                        R.drawable.last_revolut_gradient))
            } else {
                //Expanded
                toolBar.setBackgroundColor(ContextCompat.getColor(this,
                        android.R.color.transparent))
            }
        }

उपयोगकर्ता द्वारा स्क्रीन को नीचे स्क्रॉल करने के बाद, CollapsingToolbarLayout में छवि गायब हो जाती है और पीछे बटन, सामग्री शीर्षक और सेटिंग्स मेनू के साथ टूलबार छोड़ दिया जाता है। मैं जानना चाहता हूं कि उस टूलबार की पृष्ठभूमि का रंग कैसे बदला जाए, जब उसकी 'ध्वस्त' अवस्था में हो।

मैं जिस कार्य का उल्लेख कर रहा हूं, वह इसके समान है जहां टूलबार की पृष्ठभूमि का रंग हरे रंग में बदल जाता है:

CollapsingToolbarLayout के नीचे, मेरे पास CardViews के साथ एक NestedScrollView है


पहले हटाओ

app:contentScrim="?attr/colorPrimary"> 

CollapsingToolbarLayout से

पुस्तकालय जोड़ें

compile 'com.android.support:palette-v7:23.2.1'

और जावा कोड में नीचे कोड जोड़ें

    Bitmap bitmap = BitmapFactory.decodeResource(getApplicationContext().getResources(), R.drawable.ny);
    Palette.generateAsync(bitmap,
            new Palette.PaletteAsyncListener() {
                @Override
                public void onGenerated(Palette palette) {
                    Palette.Swatch vibrant =
                            palette.getVibrantSwatch();
                    int mutedColor = palette.getVibrantSwatch().getRgb();
                    if (vibrant != null) {
                        // If we have a vibrant color
                        // update the title TextView
                        collapseToolbar.setBackgroundColor(mutedColor);
                        //  mutedColor = palette.getMutedColor(R.attr.colorPrimary);
                        collapseToolbar.setStatusBarScrimColor(palette.getDarkMutedColor(mutedColor));
                        collapseToolbar.setContentScrimColor(palette.getMutedColor(mutedColor));

                    }
                }
            });

शायद तुम जो देख रहे हो वह यह है:

myCollapsingToolbar.setContentScrimColor(getResources().getColor(R.color.my_color_id));

इसने मेरे लिए काम किया और एक बार एक छवि के मुख्य रंग को फिट करने में मेरी मदद करने के लिए इसे ढहने के बाद कोलेप्सटूलबार का रंग बदल दिया। इसके साथ, रंग स्पष्ट रूप से प्रोग्रामेटिक रूप से बदला जा सकता है!

मुझे पता है कि मुझे देर हो गई है, लेकिन मुझे उम्मीद है कि यह मदद कर सकता है।


मुझे लगता है कि आप app:contentScrim बाद हैं app:contentScrim

<android.support.design.widget.CollapsingToolbarLayout
    ...
    app:contentScrim="?attr/colorPrimary">
    <!-- Toolbar and ImageView here -->
</android.support.design.widget.CollapsingToolbarLayout>




android-collapsingtoolbarlayout