2015-10-29 6 views
27

समाधान खोजने के बाद, मुझे अपनी समस्या का समाधान करने के लिए कोई भी नहीं मिला।ऊंचाई एक लाइनरलाइट पर काम नहीं कर रहा

मेरे पास कुछ ऊंचाई है जो मेरे ऐप के एक बड़े हिस्से पर एक छाया उत्पन्न करती है।
लेकिन किसी विशेष स्थान पर, मैं इसे काम करने में सक्षम नहीं हूं।

enter image description here

उपकरण पट्टी के नीचे सफेद क्षेत्र एक Fragment जो एक LinearLayout

लेआउट प्रदर्शित करता है (यह है जहाँ मैं नीचे चित्र पर एक तीर डाल है):

<LinearLayout 
    android:id="@+id/panelAddress" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/button_flat_white" 
    android:elevation="10dp" 
    android:orientation="vertical" 
    android:padding="20dp" 
    > 
//some content 
</LinearLayout> 

फ्रैगमेंट के माता-पिता:

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawerLayout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <include 
      android:id="@+id/custom_toolbar" 
      layout="@layout/toolbar"/> 

     <RelativeLayout 
      android:id="@+id/mapLayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <fragment 
       android:id="@+id/map" 
       class="com.google.android.gms.maps.SupportMapFragment" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 

      <FrameLayout 
       android:id="@+id/fragment_container_top" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       /> 

      <FrameLayout 
       android:id="@+id/fragment_container_bottom" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true"/> 

     </RelativeLayout> 

    </LinearLayout> 

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

क्या आपको पता है कि मुझे अपनी ऊंचाई क्यों नहीं मिली है?

+0

लाइनरलेआउट लाल की पृष्ठभूमि रंग, बस यह पता लगाने के लिए कि वास्तव में यह क्षेत्र क्या है। यह पूरे टुकड़े में फैला हो सकता है। – CurlyCorvus

+0

@CurlyCorvus, यह सही जगह लेता है .. –

+0

क्या आपने एंड्रॉइड की कोशिश की: outlineProvider = "cls" आपके टुकड़े में? –

उत्तर

44

के रूप में यहाँ वर्णित https://stackoverflow.com/a/27518160/2481494 वहाँ कई आवश्यकताएँ हैं ताकि छाया तैयार की है:

  • अंतरिक्ष माता-पिता में छाया के लिए समूह में देखते हैं। bleeding182 उल्लेख किया है, गद्दी का कारण बन सकती छाया काटा जा करने के लिए:

    (एक गद्दी का उपयोग न करें framelayout पर एक गद्दी भी बंद छाया कट जाएगा।)

    बहरहाल, यह तय किया जा सकता है माता-पिता में android:clipToPadding="false" के साथ।

  • उन्नत दृश्य को छाया डालने के लिए पृष्ठभूमि की आवश्यकता होती है। आपके @drawable/button_flat_white के बारे में जानकारी के बिना मैं यह नहीं बता सकता कि यह आपके मामले में एक समस्या है या नहीं।

अपनी समस्या को हल करने के लिए आप इस तरह अपने FrameLayout को संशोधित करना चाहिए:

<FrameLayout 
     android:id="@+id/fragment_container_top" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 

     android:clipToPadding="false" 
     android:paddingBottom="10dp"/> 

अपने @drawable/button_flat_white का कारण बनता है कि क्या किसी भी समस्याओं अस्थायी रूप से एक साधारण रंग करने के लिए अपने LinearLayout की पृष्ठभूमि को बदलने की कोशिश की जाँच करने के लिए:

<LinearLayout 
    android:id="@+id/panelAddress" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:elevation="10dp" 
    android:orientation="vertical" 
    android:padding="20dp" 

    android:background="#fff"> 
//some content 
</LinearLayout> 
-3

सक्षम करें मैनिफ़ेस्ट फ़ाइल में hardwardAccelerated विकल्प,

<application 
    ... 
    android:hardwareAccelerated="true"> 
+1

समस्या नहीं है। जैसा कि मैंने कहा, मेरे पास पहले से ही ऊंचाई के साथ बहुत सी जगह है जो अच्छी तरह से काम करती है। और यह समस्या का समाधान नहीं करता है =/ –

+0

''हार्डवेयर' एक्सेलरेटेड''' सक्षम करने के पीछे तर्क क्या है ?? –

+0

एक आकर्षण की तरह काम करता है ... धन्यवाद –

2

यह एक ड्राइंग मुद्दा है।

कास्ट छाया वास्तविक दृश्य सीमाओं के बाहर खींची जाती है, इसलिए यदि पैरेंट लेआउट पर्याप्त स्थान को "देने" नहीं देता है, तो इसे बंद कर दिया जाएगा।

चूंकि खंड (लीनियर लेआउट) के पैरेंट का आकार समान है, छाया छाया हो गई है। LinearLayout पर नीचे एक मार्जिन जोड़ें।
यदि यह तल पर एक छोटे से मार्जिन के साथ एक FrameLayout साथ लेआउट लपेटकर कोशिश मदद नहीं करता है (एक गद्दी का उपयोग नहीं करें। Framelayout पर एक गद्दी भी छाया कट जाएगा)

1-2dp करना चाहिए।

11

बस अपने लाइनरलेआउट के माता-पिता के रूप में कार्डव्यू बनाएं और आप ऊंचाई प्राप्त कर सकते हैं।

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    card_view:cardUseCompatPadding="true" 
    card_view:cardElevation="4dp" 
    card_view:cardCornerRadius="3dp"> 

     <LinearLayout 
       android:id="@+id/panelAddress" 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/button_flat_white" 
       android:orientation="vertical" 
       android:padding="20dp"> 

      //some content 
     </LinearLayout> 
</android.support.v7.widget.CardView> 
+0

मुझे लगता है कि यह सबसे अच्छा समाधान है। अन्य जो कार्डव्यूज़ आलवे का उपयोग नहीं करते हैं, वे एक समस्या या दूसरे में परिणाम देते हैं। – RominaV

0

मुझे उम्मीद है कि यह आपकी मदद करेगा, बस दूसरे लेआउट में "मार्जिनटॉप" जोड़ें।

<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="90dp" 
    android:orientation="vertical" 
    android:elevation="5dp" 
    /> 

<LinearLayout 
    android:id="@+id/linearLayout2" 
    android:layout_width="match_parent" 
    android:layout_height="90dp" 
    android:orientation="vertical" 
    android:padding="5dp" 
    android:layout_marginTop="3dp" 
    /> 
0

मैं (नीचे और लेआउट के अधिकार में छाया के लिए) यह मेरे लिए अपने शो एक छाया काम करेंगे उपयोग गद्दी सही और गद्दी नीचे है अन्यथा drawable काम कर समस्या नहीं छाया ऐसी बात करते हैं अगर आप एक ही सामना करना पड़ मुसीबत।

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