2012-11-29 11 views
8

मैं एक DialogFragment उपयोग कर रहा हूँ और पाया चौड़ाई हमेशा हमेशा की पूरी स्क्रीन हो जाता है जब मैं layout_width और minWidth फिक्सिंग से एक आंतरिक LinearLayout के layout_width = match_parent बनाने के लिए, कोई फर्क नहीं पड़ता कि कितने contraints मैं इस पर मजबूर करने के लिए कोशिश माता-पिता, देखने या CreateView में लेआउट dimens()DialogFragment आकार (चौड़ाई) पर ध्यान नहीं दिया

की स्थापना dialog.xml की

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="@dimen/dialog_width" 
android:layout_height="@dimen/dialog_height" 
android:minWidth="@dimen/dialog_width" 
android:minHeight="@dimen/dialog_height" 
android:orientation="vertical" 
android:paddingTop="5dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    ... 
    </LinearLayout> 
</LinearLayout> 

Dialog.java

public class MyDialog extends DialogFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ... 
     Resources r = getActivity().getResources(); 
     getDialog().getWindow().setLayout((int)r.getDimension(R.dimen.dialog_width), (int)r.getDimension(R.dimen.dialog_height)); 
     return view; 
    } 
} 

ओ केवल तभी तरह से मैं इस काम कर सकते हैं भीतरी LinearLayout layout_width = "@ Dimen/dialog_width

काट दिया dialog.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
... > 

<LinearLayout 
    android:layout_width="@dimen/dialog_width" 
    android:layout_height="wrap_content"> 
    ... 
    </LinearLayout> 
... 
</LinearLayout> 

कौन सा ठीक काम करता है, लेकिन संवाद के अन्य भागों के लिए कुछ परिणाम है की स्थापना कर रहा है। क्या यह एंड्रॉइड में एक बग है?

+0

उपयोग RelativeLayout सब बातों के बजाय डाल रैखिक – Sameer

उत्तर

2

मैंने इस पर कोई दस्तावेज नहीं देखा है, लेकिन मैंने कहीं कहीं (शायद एसओ पर पढ़ा है कि जब रूट बनाया गया है तो रूट लेआउट के लेआउट_विड्थ और लेआउट_हेइट पैरामीटर 'wrap_content' से अधिक सवार हैं।

मुझे यकीन नहीं है कि यह वास्तव में सच है या नहीं, लेकिन मैंने देखा लेआउट व्यवहार से पता चलता है कि यह सच है। वैसे भी, मुझे लगता है कि यह मामला है कि मैं अपने संवाद लेआउट में ठीक से प्राप्त कर लिया है।

आप जहां भी संभव हो, अपने आंतरिक लेआउट पर wrap_content भी कोशिश कर सकते हैं। हार्डकोडेड चौड़ाई कई उपकरणों में अच्छी तरह से काम नहीं करती है।

-2

इस

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="@dimen/dialog_width" 
android:layout_height="@dimen/dialog_height" 
android:minWidth="@dimen/dialog_width" 
android:minHeight="@dimen/dialog_height" 
android:orientation="vertical" 
android:paddingTop="5dp"> 
    ... 
</LinearLayout> 

उपयोग केवल एक LinearLayout के साथ कोड बदलें और में यह

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