2016-04-24 29 views
9

के तहत सामग्री प्रदर्शित करें हैलो मैं बस अपनी सामग्री को टूलबार के नीचे डालने का प्रयास कर रहा हूं लेकिन फिलहाल जब मैं अपना आवेदन चलाता हूं तो कुछ सामग्री इसके पीछे छिपी हुई है जब यह नीचे होनी चाहिए।टूलबार

मैंने इसे अलग करने के प्रयास के लिए फ्रेम लेआउट का उपयोग करने के बारे में पढ़ा है लेकिन मैं थोड़ा फंस गया हूं। मैं वर्तमान में सॉफ्टवेयर के साथ प्रदान किए गए एक बुनियादी एंड्रॉइड स्टूडियो नेविगेशन ड्रॉवर टेम्पलेट का उपयोग कर रहा हूं और सोच रहा था कि मुझे क्या परिवर्तन करना है।

मेरे समन्वयक लेआउट

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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

<FrameLayout 
    android:id="@+id/fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

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

मेरे दराज लेआउट

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<include 
    layout="@layout/app_bar_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/activity_main_drawer" /> 

    </android.support.v4.widget.DrawerLayout> 

क्या परिवर्तन बनाने के लिए की जरूरत है?

उत्तर

16

कई ViewGroups अपने बच्चों को ओवरलैप करने की अनुमति के लिए इस कोड जोड़ें। इनमें फ़्रेमलाउट, रिलेवेटिवआउट, कोऑर्डिनेटरलाउट, और ड्रॉवरलाउट शामिल हैं। एक जो अपने बच्चों को ओवरलैप करने की इजाजत नहीं देता है वह लाइनरलाउट है।

आपके प्रश्न का उत्तर वास्तव में अंतिम परिणाम क्या होना चाहिए इस पर निर्भर करता है। तुम सिर्फ एक उपकरण पट्टी स्क्रीन पर हमेशा होता है कि और यह नीचे कुछ सामग्री के लिए कोशिश कर रहे हैं, तो आप एक CoordinatorLayout और AppBarLayout बिल्कुल जरूरत नहीं है, तो आप सिर्फ दो बच्चों के साथ एक ऊर्ध्वाधर LinearLayout उपयोग कर सकते हैं:

<LinearLayout android:orientation="vertical" ...> 
    <android.support.v7.widget.Toolbar 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     ... /> 

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     ... /> 
</LinearLayout> 

फ़्रेमलेआउट के नोट लेआउट विशेषताएँ।

आप कल्पना सामान जहां पर और बंद स्क्रीन आप सामग्री स्क्रॉल के रूप में उपकरण पट्टी स्क्रॉल, तो आप एक AppBarLayout जरूरत है क्या करना चाहते हैं और आप अपनी सामग्री क्षेत्र इस तरह एक विशेष गुण देने के लिए की जरूरत है:

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

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

    <FrameLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     ... /> 
</android.support.design.widget.CoordinatorLayout> 
+0

चीजों को और स्पष्ट करने के लिए लेआउट विशेषताओं को जोड़ने के लिए संपादित किया गया। – Karakuri

+0

बहुत बहुत धन्यवाद, हल किया गया समस्या को यह नहीं पता था कि यह कितना आसान था: डी – james

7
app:layout_behavior="@string/appbar_scrolling_view_behavior" 

अपने फ्रेम टैग

+0

यह इतना आसान नहीं है:


नीचे कोड पर एक नज़र और यूआई छवि है। उन्होंने यह नहीं कहा कि वह टूलबार को स्क्रॉल करना चाहता है। – Karakuri

+0

मैं बस टूलबार के तहत अपनी मानक पृष्ठ सामग्री चाहता हूं: डी – james

+2

पहले मेरे समाधान का प्रयास करें। : डी –

0

@Brian होआंग और @Karakuri रूप layout_behaviour संपत्ति का उपयोग कर कहा:

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

एक बहुत अच्छा समाधान हो रहा है। भले ही आपके पास इस समय कोई एनिमेशन नहीं है लेकिन आप भविष्य में होने की योजना बना रहे हैं, फिर भी यदि आप भविष्य में एनिमेशन जोड़ना चाहते हैं तो भी आप कोऑर्डिनेटरलाउट और ऐपबारलाउट रख सकते हैं।


संपत्ति मेरी समझ से सामान्य रूप में कर रहा है क्या, पूरे AppBarLayout UI घटक की ऊंचाई की गणना करने के लिए है। UI घटक जो layout_behaviour प्रॉपर्टी का उपयोग @ string/appbar_scrolling_view_behaviour के साथ करता है, ऊंचाई के बावजूद स्वचालित रूप से AppBarLayout के नीचे दिखाया जाएगा।

इस तरह यूआई में किसी भी शीर्ष मार्जिन को हार्डकोड करने की आवश्यकता नहीं है जो ऐपबारलाउट के तहत होना चाहिए।

include_app_bar_with_tabs_layout (AppBarLayout) नीचे दिए गए कोड में (या इसे wrap_content किया जा सकता है और कुछ भी) 200dp की एक निश्चित ऊंचाई है। फिर रिलेवेटिवआउट जिसमें स्क्रीन की सामग्री शामिल है लेआउट_बेवियर प्रॉपर्टी का उपयोग करती है।

<?xml version="1.0" encoding="utf-8"?> 
<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"> 

    <include 
     layout="@layout/include_app_bar_with_tabs_layout" 
     android:layout_width="match_parent" 
     <!-- this can be anything, even wrap_content --> 
     android:layout_height="200dp" /> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/Green" 
     <!-- this tells it to be below the include_app_bar_with_tabs_layout (AppBarLayout) --> 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/view_pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_above="@+id/adView" /> 

     <com.google.android.gms.ads.AdView 
      android:id="@id/adView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_centerHorizontal="true" 
      app:adSize="BANNER" 
      app:adUnitId="@string/banner_ad_unit_id" 
      tools:background="@color/green" 
      tools:layout_height="50dp" /> 
    </RelativeLayout> 
</android.support.design.widget.CoordinatorLayout> 

enter image description here

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