ভেঙে পড়ার সময়ই কলসিংটুলবারআউট শিরোনাম দেখান


145

আমি চেষ্টা করেছি setExpandedTitleColorএবং setCollapsedTitleColor(স্বচ্ছের দিকে এবং স্বচ্ছ থেকে স্যুইচ করছি) ভাগ্যবিহীন। আমি এমন কোনও পদ্ধতিতে দেখতে পাচ্ছি না যা আমি যা খুঁজছি তা করবে।

কলসিংটুলবারআলআউট সম্পূর্ণরূপে ভেঙে গেলে আমি কেবল শিরোনামটি দেখাতে চাই, অন্যথায়, আমার এটি লুকানো দরকার।

কোন ইঙ্গিত?

উত্তর:


285

কখন সংক্ষিপ্ত বা প্রসারিত হবে এবং এর শিরোনাম সেট করতে আপনি এটি যুক্ত OnOffsetChangedListenerকরতে পারেন ।AppBarLayoutCollapsingToolbarLayout

জাভা

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsingToolbarLayout);
AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout);
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
    boolean isShow = true;
    int scrollRange = -1;

    @Override
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
        if (scrollRange == -1) {
            scrollRange = appBarLayout.getTotalScrollRange();
        }
        if (scrollRange + verticalOffset == 0) {
            collapsingToolbarLayout.setTitle("Title");
            isShow = true;
        } else if(isShow) {
            collapsingToolbarLayout.setTitle(" ");//careful there should a space between double quote otherwise it wont work 
            isShow = false;
        }
    }
});

Kotlin

var isShow = true
var scrollRange = -1
appBarLayout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { barLayout, verticalOffset ->
    if (scrollRange == -1){
        scrollRange = barLayout?.totalScrollRange!!
    }
    if (scrollRange + verticalOffset == 0){
        collapsingToolbarLayout.title = "Title Collapse"
        isShow = true
    } else if (isShow){
        collapsingToolbarLayout.title = " " //careful there should a space between double quote otherwise it wont work
        isShow = false
    }
})

1
এই সমাধানটি এপিআই 23 এবং উপরের জন্য কাজ করে। এটি সবচেয়ে সঠিক সমাধান।
সাইমন

দয়া করে এটি সঠিক উত্তর হিসাবে চিহ্নিত করুন। @ ড্লোহানীর উত্তর যা বর্তমানে সঠিক হিসাবে চিহ্নিত হয়েছে তা পাঠ্যটি আড়াল করে না কারণ আপনি এটি রূপান্তর দেখতে পাচ্ছেন।
থিশিচেলস্কট 21 '17

9
এটি আমার পক্ষে কাজ করেছে, তবে ক্রিয়াকলাপ শুরুর সময় প্রসারিত সরঞ্জামদণ্ডে অ্যাপ্লিকেশন নাম সরাতে "বুলিয়ান ইসশো = মিথ্যা" পরিবর্তন করতে হয়েছিল।
ডিএইচ 28

3
@ জিউসেপ: এটি একই রকম। এপিআই 16 -> কর্মরত
ভাগ্যবান

1
এটি আমার পক্ষে কার্যকর হয়নি, কখনও কখনও শিরোনামটি একেবারেই দেখা যায় না এমনকি আমার লগগুলিতে স্পষ্টভাবে বলা হয় যে সেটটাইটেলটিকে "শিরোনাম" দিয়ে ডাকা হয়েছিল
ইউজার ১1৩৪4০৩

47

আমি দোলাহানির সমাধানটি চেষ্টা করেছিলাম, কিন্তু ফেইড আউট হওয়ার কারণে এটি পছন্দ হয়নি। এই সমাধানের সাহায্যে আপনি বিবর্ণতা পুরোপুরি সরিয়ে ফেলুন।

কৌশলটি হ'ল 0.1S বা 0 এসএসপি (এই এসডিকে <19 এ ক্র্যাশ হয়েছে) এবং পাঠ্য রঙ স্বচ্ছ সহ টেক্সট সাইজের সাথে একটি নতুন স্টাইল তৈরি করা:

এসডিকে <19 এর জন্য

<style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme">
    <item name="android:textColor">@android:color/transparent</item>
    <item name="android:textSize">0.1sp</item>
</style>

এসডিকে> = 19 এর জন্য

<style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme">
    <item name="android:textColor">@android:color/transparent</item>
    <item name="android:textSize">0sp</item>
</style>

তারপরে এটি আপনার লেআউটের কলাপসিং টুলবারের লেআউটে প্রয়োগ করুন:

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:expandedTitleTextAppearance="@style/CollapsingToolbarLayoutExpandedTextStyle"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

ঠিক আছে, সর্বদা মত, এটি অন্য একটি সমাধান যা সমস্ত ডিভাইসের জন্য একই কাজ করে না। Kitkat 0sp এ কাজ করছে বলে মনে হচ্ছে, তবে জেলিবিনে এটি অ্যাপটিকে ক্র্যাশ করেছে। 0.1 স্প জেলিবিয়ানে কাজ করে তবে টেক্সটটি হিট করে দেয় কটকাত :(
রবেন সউসা

আমরা কীভাবে এপিআই স্তরের সীমাটি নির্ধারণ করতে পারি?
মাহমুদ

আপনাকে এসডিকে> = 19 এর জন্য ভ্যালু-ভি 19 ফোল্ডার এবং এসডিকে <19 এর জন্য মান ফোল্ডারটি ব্যবহার করতে হবে a রেফারেন্সের জন্য এটি একবার দেখুন: স্ট্রোকফ্রোফ
ডকুমেন্টস

1
@ এনডোহানির সমাধানটি করেন নি এমন সময়ে এটি এন-তে কাজ করে
টাইলার

1
এটি সহজ এবং সর্বোত্তম সমাধান। তোমাকে অনেক ধন্যবাদ.
বিকাশ পারাজুলি

38

এক্সএমএল লেআউটে নিম্নলিখিত সম্পত্তি যুক্ত করে আমি কাঙ্ক্ষিত প্রভাব পেতে সক্ষম হয়েছি:

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

সুতরাং আমার কলসিংটুলবারআলআউটটি দেখতে এমন দেখাচ্ছে

<android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbarLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:expandedTitleTextAppearance="@android:color/transparent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

এটি awsome :) কিছু অ্যানিমেশন নিয়ে শিরোনাম পাওয়ার জন্য কি কোনও ওয়ে?
লুবস মুদ্রাক

7
এটি ভয়াবহ, আপনি দেখতে পাচ্ছেন যে এটি ধসে পড়ছে। বরং এটি তার চূড়ান্ত অবস্থানে ম্লান হয়ে যায়।
ক্যাপ্টরিস্কি

1
ক্যাপ্টেন রিস্কি যা বলেছে তাও। দুর্ভাগ্যক্রমে, আমি মনে করি না এর বিকল্প আছে :-(
কেনেই

9
আপনি কেবল অ্যানড্রয়েড এপিআই 22 বা নীচে ব্যবহার করা হলে এটি কাজ করবে। 23 বা ততোধিকের জন্য, সমাধানটি কাজ করে না। আপনাকে @ স্টিভেন274 থেকে সমাধানটি ব্যবহার করতে হবে।
সাইমন

1
অ্যান্ড্রয়েড এপিআই 23 তে যখন আরও চেষ্টা করা হয়েছে তখন এটি আরও ভাল কাজ করছে
dlohani

24

আমার আরও সহজ উত্তর আছে:

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);

collapsingToolbarLayout.setTitle("Your Title");
collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(R.color.transperent)); // transperent color = #00000000
collapsingToolbarLayout.setCollapsedTitleTextColor(Color.rgb(0, 0, 0)); //Color of your title

শুভ কোডিং!


4
এটি অন্যান্য উত্তরে রেফারেন্স হিসাবে ইস্যুতে একই বিবর্ণ কারণ ঘটায়।
থিসিচেলসকোট

আমি কেবলমাত্র সরঞ্জামদণ্ডের শিরোনামের রঙটি পরিবর্তন করতে চেয়েছিলাম এবং এটি আমার জন্য কাজ করেছেmCollapsingToolbarLayout.setExpandedTitleColor(Color.argb(255,0,0,0))
কোসিয়ারা - বার্তোসক কোসরজেকি

@ বার্তোস কোসারজিকি, আমি এমক্ল্যাপসপিংটুলবারলআউট.সেট এক্সপেনডেড টাইটেল কালার (কালার.আরজিবি (255,0,0,0)) এর সাথে দুর্ভাগ্য ছিল; তবে এমক্ল্যা্যাপসিংটুলবারলআউট.সেটএক্সপ্যান্ডেড টাইটেল কালার (প্রসঙ্গ। বিট রিসোর্সস) (গেটকালার (android.R.color.transparent)); কাজটি করেছেন, তবে অবশ্যই আপনার সমাধান থেকে উদ্ভূত :)
শাইহানেদ

24

এই কোডটি আমার জন্য কাজ করে: color.parse color ব্যবহার করুন কারণ যদি আপনার ব্যাকগ্রাউন্ডের রঙ আলাদা হয় তবে সাদা এবং আপনার শিরোনামটি প্রদর্শন না করে প্রতিস্থাপন করুন

collapsingToolbarLayout.setExpandedTitleColor(Color.parseColor("#00FFFFFF"));

অথবা আপনি স্বচ্ছ ব্যবহার করতে পারেন collapsingToolbarLayout.setExpandedTitleColor(Color.TRANSPARENT);


কোনও অতিরিক্ত শ্রোতা প্রত্যাশার মতো কাজ করেন না!
মৃত্যুঞ্জয় কুমার

19

আমি সাফল্যের সাথে একটি বিবর্ণ টেক্সটভিউ যুক্ত করেছি, কেবলমাত্র সরঞ্জামদণ্ডে একটি পাঠ্য দর্শন যুক্ত করব এবং অ্যাপবার কলব্যাকের উল্লম্ব অফসের উপর ভিত্তি করে এটি আলফা সেট করব

mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {

        @Override
        public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {

            mTitleTextView.setAlpha(Math.abs(verticalOffset / (float)
                    appBarLayout.getTotalScrollRange()));
        }
    });

ভাসমান পরিসীমা = appBarLayout.getTotalScrolRange (); ভাসমান আলফা = ম্যাথ.এবস (উল্লম্বঅফসেট / পরিসর); যদি (আলফা> 0.8) {এমটুলবার.সেটআল্ফা (আলফা); } অন্য {এমটুলবার.সেটআল্ফা (.0f); }
কিন্মিয়াও

13

এপিআই 23 সহ এখানে সবচেয়ে সহজ এবং কার্যক্ষম সমাধান:

অ্যাপ্লিকেশন: প্রসারিতTitleTextAppearance টেক্সটঅ্যাপিয়ারেন্সের উত্তরাধিকারী হবে।

সুতরাং, আপনার শৈলীতে। Xml এই সারিগুলি যুক্ত করুন:

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

তারপরে, আপনার কলাপসিং টুলবারলয়েটে এই সারিটি যুক্ত করুন add

app:expandedTitleTextAppearance="@style/TransparentText"

এই সব লোকেরা!


5

নীচের সমাধানটি নিখুঁতভাবে কাজ করে।

appbar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
                @Override
                public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                    if (Math.abs(verticalOffset)-appBarLayout.getTotalScrollRange() == 0)
                    {
                        // Collapsed
                        setTitle("Title To Show");
                    }
                    else
                    {
                        // Expanded
                        setTitle("");
                    }
                }
            });

4

এখানে আমার সমাধান:

collapsingToolbar.setCollapsedTitleTextAppearance(R.style.personal_collapsed_title);
collapsingToolbar.setExpandedTitleTextAppearance(R.style.personal_expanded_title);

<style name="personal_collapsed_title">
     <item name="android:textSize">18sp</item>
     <item name="android:textColor">@color/black</item>
</style>

<style name="personal_expanded_title">
     <item name="android:textSize">0sp</item>
</style>

2

আমার বিপরীতে কিছুটা মার্জিত সমাধান এরকম কিছু হবে।

public class MyCollapsingToolbarLayout extends CollapsingToolbarLayout {

    private final int toolbarId;
    @Nullable private Toolbar toolbar;

    public MyCollapsingToolbarLayout(Context context, AttributeSet attrs) {
        super(context, attrs);

        setTitleEnabled(false);

        TypedArray a = context.obtainStyledAttributes(attrs,
                R.styleable.CollapsingToolbarLayout, 0,
                R.style.Widget_Design_CollapsingToolbar);

        toolbarId = a.getResourceId(android.support.design.R.styleable.CollapsingToolbarLayout_toolbarId, -1);

        a.recycle();

    }

    @Override public void setScrimsShown(boolean shown, boolean animate) {
        super.setScrimsShown(shown, animate);

        findToolbar();
        if (toolbar != null) {
            toolbar.setTitleTextColor(shown ? Color.WHITE : Color.TRANSPARENT);
        }
    }

    private void findToolbar() {
        if (toolbar == null) {
            toolbar = (Toolbar) findViewById(toolbarId);
        }
    }

}

এবং ব্যবহার এর মত দেখতে কিছু হবে

<butter.droid.widget.BurtterCollapsingToolbarLayout
        app:toolbarId="@+id/toolbar"
        ...>

এটি কেবল দেখানো বা লুকিয়ে রাখার পরিবর্তে পাঠ্য / বিবর্ণ হয়ে যাওয়ার সম্ভাবনা রয়েছে।


2

এটি আমার পক্ষে কাজ করে।

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;
        }
    }
});

0

এটি কোটলিন সংস্করণ যা আমার পক্ষে কাজ করে:

appbar.addOnOffsetChangedListener(object : OnOffsetChangedListener {
                var isShow = true
                var scrollRange = -1
                override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
                    if (scrollRange == -1) scrollRange = appBarLayout.totalScrollRange

                    if (scrollRange + verticalOffset == 0) {
                        toolbarLayout.title = "Title"
                        isShow = true
                    } else if (isShow) {
                        toolbarLayout.title = " " //These quote " " with _ space is intended 
                        isShow = false
                    }
                }
            })

0

শুধু এই কোড যুক্ত করুন:

     CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collaps_main);

collapsingToolbarLayout.setExpandedTitleColor(ContextCompat.getColor(this , android.R.color.transparent));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.