AppBarLayout দিয়ে ওভারল্যাপ স্ক্রোলিং ভিউ


102

আমি এই ভিডিওর মতো ম্যাটেরিয়াল ডিজাইনের স্ক্রোলিং কৌশলগুলি থেকে 'ওভারল্যাপিং সামগ্রী সহ নমনীয় স্থান' প্যাটার্নটি বাস্তবায়ন করতে চাই : ওভারল্যাপিং সামগ্রী GIF সহ নমনীয় স্থান

আমার এক্সএমএল লেআউটটি এখনই দেখাচ্ছে:

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <android.support.design.widget.AppBarLayout
      android:layout_width="match_parent"
      android:layout_height="192dp"
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

      <android.support.v7.widget.Toolbar
          android:layout_height="?attr/actionBarSize"
          android:layout_width="match_parent"
          app:layout_collapseMode="pin"/>
    </android.support.design.widget.CollapsingToolbarLayout>
  </android.support.design.widget.AppBarLayout>

  <android.support.v4.widget.NestedScrollView
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
      <....>
    </LinearLayout>
  </android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

ডিজাইন লাইব্রেরি ব্যবহার করে এটি সম্পাদন করার সহজ উপায় কি আছে? বা এটি করার জন্য আমাকে কি কাস্টম সমন্বয়কারী লেআউট.বিহীন নির্মাণ করতে হবে?


আমি বিপরীতমুখীটি অনুসন্ধান করছি, কলসিংটুলবারআলআউটের অভ্যন্তরে একটি চিত্রটি সরঞ্জামদণ্ডের পরে এবং নেস্টেডস্ক্রোলভিউয়ের নীচে অন্য রঙে আরও কয়েক ডিপিএস দেখানো উচিত!
ডেভিড

আমি ফ্রেমলাউট, রিলেটিভলআউট ব্যবহার করছিলাম তবে সবসময় খণ্ডগুলি অ্যাকশনবারের সাথে ওভারল্যাপ করা হত। সমস্ত অংশের জন্য পিতামাতার হিসাবে নেস্টডস্ক্রোলভিউ ব্যবহার করা ছিল সমাধান। ধন্যবাদ!
জে কার্লোসআর 30:38

উত্তর:


147

প্রকৃতপক্ষে, অ্যাপবারলয়েআউটটির সাথে স্ক্রোলিং ভিউটি ওভারলেল করা অ্যান্ড্রয়েড ডিজাইন সমর্থন লাইব্রেরির একটি অন্তর্ভুক্ত বৈশিষ্ট্য : আপনি ওভারল্যাপের পরিমাণ নির্ধারণ করতে app:behavior_overlapTopআপনার NestedScrollView(বা কোনও স্ক্রোলিংভিউ ব্যবহার করে কোনও দৃশ্য ) বৈশিষ্ট্যটি ব্যবহার করতে পারেন :

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    app:behavior_overlapTop="64dp">

দ্রষ্টব্য যে app:behavior_overlapTopকেবল app:layout_behavior="@string/appbar_scrolling_view_behavior"সেই আচরণের সাথে কাজ করে যা আচরণ হিসাবে এটি বৈশিষ্ট্যটি ব্যবহার করে (যেমন ভিউ বা প্যারেন্ট ভিউগ্রুপ নয়, বৈশিষ্ট্যগুলিতে সাধারণত প্রয়োগ হয়), তাই behavior_উপসর্গ।

অথবা সেটঅভারলেটপ () এর মাধ্যমে প্রোগ্রামিয়ালি সেট করুন :

NestedScrollView scrollView = ...
CoordinatorLayout.LayoutParams params = 
    (CoordinatorLayout.LayoutParams) scrollView.getLayoutParams();
AppBarLayout.ScrollingViewBehavior behavior =
    (AppBarLayout.ScrollingViewBehavior) params.getBehavior();
behavior.setOverlayTop(128); // Note: in pixels

1
এটি আমার জন্য প্রায় কাজ করছে, আমার রিসাইকেলার ভিউ বাদে (যার উপর আমি সেট করেছি layout_behaviorএবং behavior_overlapTop) এর ভাইবাল অ্যাপবারলয়েটের পিছনে শেষ । আমি এক্সএমএলটিতে অর্ডারটি স্যুইচ করার চেষ্টা করেছি, তবে এর কোনও প্রভাব আছে বলে মনে হয় না। কোন ধারণা কি হতে পারে?
ভিকি চিজওয়ানি

1
যখন আমি স্ক্রোলিং অক্ষম করি (অ্যাপ্লিকেশন: লেআউট_স্রোকল ফ্ল্যাশ বৈশিষ্ট্যগুলি সরিয়ে ফেলা) - আচরণ_অরোল্যাপটপ কাজ করে না - নেস্টেডস্ক্রোলভিউ অ্যাপবারলয়েউটের আওতায় চলে। আপনি এই স্থির করা কি জানেন কিভাবে?
পাভেল বিরিয়ুকভ

@ পাভেলবিরিয়ুকভ আপনি এপিআই <21 এর জন্য কী করেছেন?
ভিকি চিজওয়ানি

1
হ্যালো, এটি আমার পক্ষে কাজ করে না। আমি পেয়েছিerror no resource identifier found for attribute behavior_overlayTop
জ্যাক লিংস

1
@ লিঙ্ক - বিভ্রান্তিকরভাবে যথেষ্ট, এটি behavior_overlapTopতবে setOverlayTop()- ওভারলে বনাম ওভারলে্যাপ । আপনি সঠিকটি ব্যবহার করছেন তা নিশ্চিত করুন!
ianhanniballake

20

গৃহীত উত্তরের পাশাপাশি , শিরোনামটিকে শীর্ষে স্থির করে তুলতে উদাহরণস্বরূপ শীর্ষে স্থির রাখতে আপনার কলসিংটুলবারলআউটে সেটটাইটেলএনেবল (মিথ্যা) কল করুন।

এটার মত:

CollapsingToolbarLayout.setTitleEnabled(false);

বা এটি এক্সএমএলে এটি যুক্ত করে:

app:titleEnabled="false"

অন্যথায় শিরোনামটি ওভারল্যাপিং সামগ্রীর পিছনে অদৃশ্য হয়ে যেতে পারে, অবশ্যই যদি না হয় তবে এটিই আপনি চান আচরণ।


2
প্রসারিত হওয়ার সময় শিরোনামকে ওভারল্যাপিং এড়ানোর জন্য আপনি একটি বিশাল পরিমাণ প্রসারিত টাইটেলমার্গিনটি কলপসিং টুলবারলয়েউটে রাখতে পারেন।
উইন্ডারাইডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.