9

मैं जानना चाहता हूं कि पृष्ठभूमि की स्थिति में, संपूर्ण स्टेटस बार (आइकन और पृष्ठभूमि) को स्क्रॉल करना संभव है या नहीं। लगभग जैसे कि यह टूलबार का हिस्सा था।क्या एंड्रॉइड पर समन्वयक लेआउट का उपयोग कर टूलबार के साथ स्टेटस बार स्क्रॉल करना संभव है?

मुझे नीचे दिए गए प्रश्न के समान स्थिति का सामना करना पड़ रहा है, अंतर यह है कि मैं जानना चाहता हूं कि क्या मैं पूरे स्टेटस बार को पृष्ठभूमि अपारदर्शी बनाने के लिए एपोज़ के रूप में स्क्रॉल कर सकता हूं - जो मुझे लगता है कि वांछित परिणाम था क्वेरी के नीचे

Android status bar scrolling up with coordinator layout, leaving status icons overlapping toolbar title

यहाँ एक ग्राफिक

enter image description here

यहाँ है मेरी कोड

है
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="me.hugopretorius.wishlizt.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay" 
     app:contentScrim="#000"> 

     <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/AppTheme.PopupOverlay" 
      /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tabs"/> 

    <io.github.yavski.fabspeeddial.FabSpeedDial 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     app:fabGravity="bottom_end" 
     app:fabMenu="@menu/menu_fab" 
     app:miniFabBackgroundTint="@android:color/white" 
     app:miniFabDrawableTint="?attr/colorPrimaryDark" 
     app:miniFabTitleTextColor="?attr/colorPrimaryDark" /> 

</android.support.design.widget.CoordinatorLayout> 
+0

तो:

//root should be your coordinator/top level layout mRoot.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

एक बार उपकरण पट्टी गिर, छिपा करने के लिए स्थिति पट्टी बदलने के लिए:

पहले, onCreate ताकि लेआउट कूद नहीं होगा जब पट्टी गायब हो निशानी नहीं लगाई दूसरे शब्द में, आप ** केवल 'टैबलाउट' ** दिखाने और 'स्टेटसबार' को छिपाने की कोशिश कर रहे हैं, है ना? – Mohsen

+0

बेशक, ** मुझे नहीं लगता कि आपको ** 'विश्वसनीय और/या आधिकारिक स्रोतों' से कोई जवाब मिलेगा, क्योंकि 'स्टेटसबार' को छिपाने के लिए एंड्रॉइड द्वारा अनुशंसा नहीं की जाती है जब 'टूलबार' छुपाया जाता है और वहां सिर्फ एक 'TabLayout' AFAIK है। – Mohsen

+0

@Mohsen मैं टूलबार दिखाई देने पर स्टेटसबार दिखाना चाहता हूं (जब उपयोगकर्ता स्क्रॉल करता है) और जब उपयोगकर्ता स्क्रॉल करता है तो स्टेटसबार और टूलबार दोनों को बाहर स्लाइड करें। वर्तमान में मेरे एकमात्र विकल्प हैं 1. छुपाएं या 2. स्टेटसबार दिखाएं। टूलबार पर मौजूद कोई स्क्रॉलिंग कार्रवाई नहीं है। –

उत्तर

0

अपनी गतिविधि के अपने onResume को यह जोड़ने का प्रयास करें

View decorView = getWindow().getDecorView(); 
int uiFlagFullscreen = View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiFlagFullscreen); 
2

आप परिवर्तनों स्क्रॉल करने के लिए सुनो, और स्थिति बार छुपाने एक बार टूलबार गिर करने के लिए सक्षम होना चाहिए। यह आपको वास्तविक वृद्धिशील स्क्रॉलिंग नहीं देगा, लेकिन आपको आवश्यकतानुसार केवल टैब के साथ छोड़ देगा। ,

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
    @Override 
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
     if (Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()) { 

      // Collapsed 
      mRoot.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
             | View.SYSTEM_UI_FLAG_FULLSCREEN); //this one changed 

     } else if (verticalOffset == 0) { 

      // Fully Expanded - show the status bar 
      if (Build.VERSION.SDK_INT >= 16) { 
       mRoot.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE 
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
      } else { 
       getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      } 

     } else { 
      // Somewhere in between 
      // We could optionally dim icons in this step by adding the flag: 
      // View.SYSTEM_UI_FLAG_LOW_PROFILE 
     } 
    } 
}); 
+0

आदर्श रूप से स्टेटस बार/सिस्टम बार केवल इमर्सिव सामग्री के लिए छिपा होना चाहिए जहां हमें पूर्ण स्क्रीन की आवश्यकता है। लेकिन टैब बार मौजूद होने के साथ हमें सिस्टम बार को संशोधित करने पर ध्यान से विचार करना चाहिए, क्योंकि वे उपयोगकर्ताओं को डिवाइस को नेविगेट करने और https://developer.android.com/training/system-ui/index.html के अनुसार अपनी स्थिति देखने का एक मानक तरीका देते हैं। । लेकिन अगर हमें वास्तव में टैब बार के साथ स्टेटस बार छिपाने की ज़रूरत है तो यह सबसे नज़दीकी समाधान प्रतीत होता है। इसमें वांछित एनीमेशन नहीं होगा और आमतौर पर एंड्रॉइड डिज़ाइन दिशानिर्देशों द्वारा अनुशंसित नहीं किया जाएगा, इसलिए इसे चुनने से पहले दो बार सोचना चाहिए। – random

+1

धन्यवाद निक, यह बहुत उपयोगी है और मैं इसका उपयोग करूंगा। भले ही इसमें स्क्रॉल एनीमेशन न हो, फिर भी स्टाइल के साथ मैं इसे अच्छा लग सकता हूं। –

संबंधित मुद्दे