সমন্বয়কারী লেআউটে সরঞ্জামদণ্ডের নীচে দর্শন যুক্ত করুন


176

আমার নীচের লেআউটটি রয়েছে:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main_content"
    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_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

    </android.support.design.widget.AppBarLayout>

    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</android.support.design.widget.CoordinatorLayout>

আমি তাদের প্রতিস্থাপন, Fragmentএর মধ্যে এস যোগ FrameLayoutকরুন। আমার Fragmentএকটি গুলি একটি তালিকা, যা নিম্নলিখিত লেআউটটি রয়েছে:

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

আমার সমস্যা এখানে যে সরঞ্জামদণ্ডটি তালিকার উপরে আঁকা । আমি সমাধান করতে যে বিষয়বস্তু মোড়কে চেষ্টা CoordinatorLayoutএকটি মধ্যে LinearLayout, যে ওভারড্র মীমাংসিত কিন্তু যে ভাবে appbar স্ক্রলিং আচরণ আর কাজ।

কোন সাহায্যের অনেক প্রশংসা করা হয়!

উত্তর:


355

গুণটি নিন

app:layout_behavior="@string/appbar_scrolling_view_behavior"

বন্ধ করুন RecyclerViewএবং এটিতে রাখুন FrameLayoutযা আপনি নীচে প্রদর্শনের চেষ্টা করছেন Toolbar

আমি সন্ধান করেছি যে স্ক্রোলিং ভিউ আচরণের একটি গুরুত্বপূর্ণ জিনিসটি সরঞ্জামদণ্ডের নীচের অংশটি বিন্যাস করা। যেহেতু এর FrameLayoutএকটি বংশধর রয়েছে যা স্ক্রোল করবে ( RecyclerView), এটি CoordinatorLayoutসেই স্থানান্তরিত করার জন্য সেইগুলি স্ক্রোলিং ইভেন্টগুলি পাবে Toolbar


আরেকটি বিষয় সম্পর্কে সচেতন হতে হবে: এই বিন্যাস আচরণটি FrameLayoutউচ্চতাটি আকারের কারণ হিসাবে Toolbarইতিমধ্যে স্ক্রোল করা হয়েছে এবং Toolbarসম্পূর্ণরূপে প্রদর্শিত হলে পুরো দৃশ্যটি কেবল নীচে ঠেলে দেওয়া হবে যাতে দৃশ্যের নীচের অংশটি নীচের নীচে থাকে CoordinatorLayout

এটি আমার কাছে অবাক হয়েছিল। আমি প্রত্যাশা করছিলাম যে সরঞ্জামদণ্ডটি নীচে এবং নীচে স্ক্রোল করা হওয়ায় দৃশ্যটি গতিশীলরূপে পুনরায় আকার দেওয়া হবে। সুতরাং আপনার যদি আপনার দেখার নীচে স্থির উপাদান সহ কোনও স্ক্রোলিং উপাদান থাকে তবে আপনি সম্পূর্ণ নীচে স্ক্রোল না করা পর্যন্ত আপনি নীচের অংশটি দেখতে পাবেন না Toolbar

সুতরাং আমি যখন ইউআই এর নীচে একটি বোতাম নোঙ্গর করতে চাইছিলাম, তখন আমি CoordinatorLayout( android:layout_gravity="bottom") এর নীচে বোতামটি রেখে এবং সরঞ্জামদণ্ডের নীচে দৃশ্যে বোতামের উচ্চতার সমান একটি নীচের মার্জিন যুক্ত করে কাজ করেছি।


1
অনেক ধন্যবাদ, এটি সত্যিই কাজ করে! তারপরে আমার একমাত্র সমস্যাটি যদি সরঞ্জামদণ্ডটি সরানো হয় তবে Fragmentতালিকার সাথে অন্যের সাথে তালিকাটি প্রতিস্থাপন করার পরে এটি ফিরে আসেনি Fragment। আমি নিজে টুলবার দেখানোর জন্য পরিচালিত এই উপায়।
ওয়ান্ডারস্যাবো

কি দারুন. আমি সর্বদা ভেবেছিলাম ফ্রেগমেন্টের নিজস্ব লেআউট ফ্রেমলআউট "স্থানধারক" পুরোপুরি প্রতিস্থাপন করেছে তবে আমি দেখছি যে এটি মোটেই ঘটেনি not এই উত্তরের জন্য ধন্যবাদ! এটা আমাকে অনেক সাহায্য করেছে।
উচ্চাকাঙ্ক্ষী দেব

@Surendar ডি এই চেক করুন যদি আপনি করতে পারেন stackoverflow.com/questions/42968587/...
মোহাম্মদ Rihan

খুশী হলাম। ধন্যবাদ!
রাজ্জান

86

আমি যোগ করে এটি ঠিক করতে পরিচালিত:

অ্যান্ড্রয়েড layout_marginTop = "অ্যান্ড্রয়েড? ATTR / actionBarSize"

ফ্রেম লেআউটে তেমন পছন্দ করুন:

 <FrameLayout
        android:id="@+id/content"
        android:layout_marginTop="?android:attr/actionBarSize"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />

9
মার্জিনটপ অ্যাড অ্যাপ্লিকেশনটি যোগ করার পরিবর্তে: লেআউট_ব্যাভায়ার = "@ স্ট্রিং / অ্যাপবার_স্ক্রোলিং_ভিউ_বিহেভিয়ার"
নাভেদ আহমেদ

3
@ স্ট্রিং / অ্যাপবার_স্রোলিং_ভিউ_বিচরণ উপলভ্য না হলে নিখুঁত সমাধান
জুলিয়াস

দয়া করে ব্যবহার করুনandroid:layout_marginTop="?android:attr/actionBarSize"
মার্টিন ফেফার

6
এটি কিন্ডা হ্যাকি, আকারটি কতটা আকারের হবে তার একটি মার্জিন যুক্ত করে (ধরে নেওয়া যে আপনি যে আকারের সবসময় একটি সরঞ্জামদণ্ড পাবেন) কোনও মুহুর্তে ভাঙ্গতে চলেছে
কেনি

0

অ্যান্ড্রয়েড স্টুডিও ৩.৪ হিসাবে আপনার নিজের লেআউটে এই লাইনটি রাখা দরকার যা এটি ধারণ করে RecyclerView

app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"

0

শীর্ষস্থানীয় সরঞ্জামদণ্ডকে সঙ্কুচিত করতে বা আপনার নিজের পছন্দ মতো স্ক্রোলফ্ল্যাগগুলি ব্যবহার করতে আমরা এইভাবে করতে পারি: মেটালিয়াল ডিজাইন থেকে ফ্রেমলাইআউট থেকে মুক্তি পান

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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">

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleGravity="top"
            app:layout_scrollFlags="scroll|enterAlways">


        <androidx.appcompat.widget.Toolbar
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin">

            <ImageView
                android:id="@+id/ic_back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_arrow_back" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="back"
                android:textSize="16sp"
                android:textStyle="bold" />

        </androidx.appcompat.widget.Toolbar>


        </com.google.android.material.appbar.CollapsingToolbarLayout>
    </com.google.android.material.appbar.AppBarLayout>

        <androidx.recyclerview.widget.RecyclerView
            android:id="@+id/post_details_recycler"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:padding="5dp"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

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