Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

एंड्रॉइड में AppBarLayout का उपयोग कैसे करें?

AppBarLayout के साथ कॉलैप्सिंग टूलबार

AppBarLayout (डिज़ाइन लाइब्रेरी / Material Components) एक वर्टिकल LinearLayout है जो स्क्रॉल जेस्चर पर प्रतिक्रिया करता है—टूलबार को कॉलैप्स/एक्सपैंड करना, दृश्य पिन करना, आदि। इसके लिए CoordinatorLayout रूट और स्क्रॉल करने योग्य चाइल्ड (RecyclerView, NestedScrollView) की आवश्यकता होती है।

निर्भरताएं (build.gradle)

dependencies {
    implementation "com.google.android.material:material:1.11.0"
    implementation "androidx.recyclerview:recyclerview:1.3.2"
}

लेआउट (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar">

        <com.google.android.material.appbar.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"
            app:title="कॉलैप्सिंग टूलबार"
            app:expandedTitleGravity="center"
            app:contentScrim="?attr/colorPrimary">

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:src="@drawable/hero_image"
                app:layout_collapseMode="parallax" />

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

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

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

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

गतिविधि (MainActivity.java)

package com.example.appbardemo;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        RecyclerView rv = findViewById(R.id.recyclerView);
        rv.setLayoutManager(new LinearLayoutManager(this));
        rv.setAdapter(new SimpleAdapter(generateItems(30)));
    }

    private List generateItems(int count) {
        List list = new ArrayList<>();
        for (int i = 1; i <= count; i++) list.add("आइटम " + i);
        return list;
    }

    // सरल एडॉप्टर
    private static class SimpleAdapter extends RecyclerView.Adapter {
        private final List data;
        SimpleAdapter(List d) { this.data = d; }
        @Override public VH onCreateViewHolder(android.view.ViewGroup p, int v) {
            android.view.View view = android.view.LayoutInflater.from(p.getContext())
                    .inflate(android.R.layout.simple_list_item_1, p, false);
            return new VH(view);
        }
        @Override public void onBindViewHolder(VH h, int i) { h.text.setText(data.get(i)); }
        @Override public int getItemCount() { return data.size(); }
        static class VH extends RecyclerView.ViewHolder {
            android.widget.TextView text;
            VH(android.view.View v) { super(v); text = v.findViewById(android.R.id.text1); }
        }
    }
}

मुख्य स्क्रॉल फ्लैग्स

फ्लैगव्यवहार
scrollस्क्रॉल ऑफसेट के साथ दृश्य चलता है
exitUntilCollapsedन्यूनतम ऊंचाई (टूलबार) तक कॉलैप्स होता है
enterAlwaysनीचे स्क्रॉल करने पर तुरंत एक्सपैंड होता है
snapमध्यवर्ती स्थिति में स्नैप होता है
parallax(CollapsingToolbarLayout पर) पृष्ठभूमि धीमी गति से चलती है
pin(टूलबार पर) कॉलैप्स होने पर टूलबार को शीर्ष पर पिन करता है

सामान्य नुकसान

  • RecyclerView में नेस्टेड स्क्रॉलिंग गायब: सुनिश्चित करें कि app:layout_behavior="@string/appbar_scrolling_view_behavior" सेट है।
  • टूलबार पिन नहीं हो रहा: टूलबार पर app:layout_collapseMode="pin" की आवश्यकता है।
  • स्थिति बार रंग: स्टेटस बार के लिए android:statusBarColor="@android:color/transparent" और थीम में windowDrawsSystemBarBackgrounds सेट करें।

मूल उदाहरण की समीक्षा

मूल कोड लिगेसी android.support.design पैकेज, हार्डकोडेड रंगों और एक अधूरे एडॉप्टर का उपयोग करता था। ऊपर दिया गया संस्करण Material Components (androidx), उचित CollapsingToolbarLayout, और एक कार्यशील RecyclerView का उपयोग करता है।

  1. एंड्रॉइड में ViewFlipper का उपयोग कैसे करें? एंड्रॉइड में ViewFlipper का उपयोग कैसे करें?

    एंड्रॉइड में ViewFlipper के साथ व्यू फ्लिपिंग एनिमेशन यह ट्यूटोरियल ViewFlipper का उपयोग करके व्यूज़ के बीच एनिमेटेड ट्रांजिशन बनाने का तरीका दिखाता है, जिसमें ऑटो-फ्लिपिंग और मैनुअल नेविगेशन शामिल है। लेआउट (activity_main.xml) <RelativeLayout xmlns:android=https://schemas.android.com/apk/res/an

  1. Android में Snackbar का उपयोग कैसे करें? Android में Snackbar का उपयोग कैसे करें?

    परिचय Snackbar Material Design का एक घटक है जो स्क्रीन के निचले भाग में एक संक्षिप्त संदेश दिखाता है। यह उदाहरण Snackbar के बुनियादी उपयोग और अनुकूलन को दर्शाता है। चरण 1: नया प्रोजेक्ट बनाएं Android Studio में नया प्रोजेक्ट बनाएं। चरण 2: लेआउट XML res/layout/activity_main.xml: <?xml version=1.

  1. Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें? Android में NavigationView (नेविगेशन ड्रॉअर) कैसे उपयोग करें?

    परिचय NavigationView मटेरियल डिज़ाइन का साइड नेविगेशन ड्रॉअर (हैमबर्गर मेनू) है। यह DrawerLayout के अंदर होता है और मेनू आइटम्स, हेडर, और नेविगेशन हैंडलिंग प्रदान करता है। यह ट्यूटोरियल Navigation Components के साथ आधुनिक सेटअप दिखाता है। आवश्यक चरण चरण 1: नया प्रोजेक्ट बनाएं Android Studio में Fi