इस ट्यूटोरियल का उपयोग करके एक लचीली स्पेस पैटर्न को लागू करना (एक टूलबार के ढहने के साथ)।
मैं लॉलीपॉप संपर्क गतिविधि में एक समान प्रभाव प्राप्त करने की कोशिश कर रहा हूं , जो गतिविधि में प्रवेश करते समय शुरुआत में, दृश्य केवल छवि हेडर का हिस्सा होता है:
तब, उपयोगकर्ता इसे और अधिक प्रकट करने के लिए छवि के नीचे लेआउट को स्क्रॉल कर सकता है, जब तक कि यह अधिकतम तक नहीं पहुंचता:
मेरे ऐप में, मैं इसे काम करने के लिए प्रबंधित नहीं कर सकता।
क्या होता है कि गतिविधि में प्रवेश करते समय, छवि हैडर को अधिकतम आकार में प्रस्तुत किया जाता है , AppBarLayout का आकार, ऊपर के लेआउट के समान, और लॉलीपॉप संपर्क गतिविधि के विपरीत , जहां यह छवि का केवल एक हिस्सा दिखाता है।
यह वह कोड है जो AppBarLayout की ऊंचाई निर्धारित करता है (मैं चाहता हूं कि स्क्रीन की चौड़ाई अधिकतम ऊंचाई हो):
int widthPx = getResources().getDisplayMetrics().widthPixels;
AppBarLayout appbar = (AppBarLayout)findViewById(R.id.appbar);
appbar.setLayoutParams(new CoordinatorLayout.LayoutParams(CoordinatorLayout.LayoutParams.MATCH_PARENT, widthPx));
और यह वह कोड है जो RecyclerView सेट करता है। स्क्रॉलटूपन का उपयोग करने की कोशिश की, सोचा कि यह RecyclerView का दृश्य ऊपर उठाएगा, लेकिन इसका कोई प्रभाव नहीं है:
mRecyclerView = (RecyclerView) findViewById(R.id.activity_profile_bottom_recyclerview);
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
// specify an adapter (see also next example)
if(mAdapter == null){
mAdapter = new ProfileAdapter(this, user, inEditMode);
mRecyclerView.setAdapter(mAdapter);
}
mRecyclerView.scrollToPosition(mAdapter.getItemCount() - 1); // itemCount is 4
यह लेआउट xml है:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/activity_profile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="0dp" // set programatically
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginBottom="32dp"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/header"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/activity_profile_bottom_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<include layout="@layout/navigation_view"/>
</android.support.v4.widget.DrawerLayout>
नोट: यदि मैं मैन्युअल रूप से स्क्रॉल करता हूं, तो RecyclerView नीचे जाता है और छवि का अधिक खुलासा करता है, यह कोड के माध्यम से काम नहीं करेगा।
मुझे लगता है कि scrollToPosition कोई समाधान नहीं है, क्या किसी के पास कोई विचार है?
EnterAlwaysCollapsed फ्लैग का उपयोग करने के बारे में सोचा, जैसा कि यहां उल्लेख किया गया है कि समन्वयक लयआउट और मिनहाइट के साथ Appbar अनुभाग में हैं:
enterAlwaysCollapsed: जब आपके दृश्य ने एक मिनीहाइट घोषित किया है और आप इस ध्वज का उपयोग करते हैं, तो आपका दृश्य केवल अपनी न्यूनतम ऊंचाई (यानी, 'ढह गया') में प्रवेश करेगा, केवल स्क्रॉल-पूर्ण दृश्य के अपने शीर्ष पर पहुंचने पर इसकी पूरी ऊंचाई तक पुन: विस्तारित हो जाएगा।
तो, मैं स्क्रॉल सेट करता हूं। मेरे RecyclerView में मेरे टूलबार और मिनीहाइट में enterAlwaysCollapsed झंडा, जो काम नहीं करता था। तब मैंने AppHarLayout जैसे अन्य लेआउट के लिए मिनीहाइट को स्थानांतरित करने की कोशिश की, कुछ भी काम नहीं किया। यह सिर्फ पूरे दृश्य के बिना कभी-कभी छवि को सिकोड़ देता है।