2012-01-22 27 views
12

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

MyFragmentDialog में मुझे एक विधि भी नहीं मिल सकती है जिसका अर्थ यह होगा कि इसका उपयोग FragmentDialog की ऊंचाई निर्धारित करने के लिए किया जा सकता है। मैं क्या खो रहा हूँ? मैं डायलॉगफ्रैगमेंट को अपनी सामग्री कैसे फिट करूं?

DialogFrament के onCreateView विधि:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="8dp" > 

    <TextView 
     android:id="@+id/br_label_message" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="8dp" 
     android:text="" 
     android:textSize="14sp" /> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TableRow 
      android:id="@+id/br_tableRow1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" > 

      <TextView 
       android:id="@+id/br_label_restore" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingRight="8dp" 
       android:text="Restore file" 
       android:textSize="14sp" /> 

      <Spinner 
       android:id="@+id/br_restore_file" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
     </TableRow> 
    </TableLayout> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TableRow> 

      <Button 
       android:id="@+id/br_restore_btn" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight=".5" 
       android:text="Restore" 
       android:textSize="14sp" /> 

      <Button 
       android:id="@+id/br_backup_btn" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight=".5" 
       android:text="Backup" 
       android:textSize="14sp" /> 
     </TableRow> 
    </TableLayout> 

    <Button 
     android:id="@+id/br_cancel_btn" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Cancel" 
     android:textSize="14sp" /> 

</LinearLayout> 

धन्यवाद,

उत्तर

29

फोन यह पता चला LinearLayout साथ एक मुद्दा उस पर एक ऊंचाई की स्थापना, DialogFragment में यह अधिक स्थान ले रही हैं की तुलना में मैं यह करना चाहते हैं लगता है के बावजूद। मैंने लेआउट को RelativeLayout होने के लिए स्विच किया है Dialog सामग्री फिट करने के लिए आकार बदलने लगता है।

+0

अरे क्या आप समाधान पोस्ट कर सकते हैं? क्या आपने सापेक्ष लेआउट या wrap_content के लिए ऊंचाई निर्धारित की है? – Ads

+0

चौड़ाई 'match_parent' थी, ऊंचाई 'wrap_content' थी। यदि आपको अभी भी समाधान पोस्ट करने की आवश्यकता है तो मुझे बताएं। – Ali

+0

धन्यवाद अली.मैं ने एक काम किया है। मैंने मौजूदा लेआउट को एक रिलेटिव लेआउट के साथ लपेट लिया है जिसकी चौड़ाई और ऊंचाई match_parent है। ठीक है, आप उत्तर पोस्ट कर सकते हैं जो आवश्यकतानुसार दूसरों के लिए उपयोगी होगा। – Ads

4

मैं तो मैं संवाद एपीआई में एक छलांग ले लिया:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // Set title for this dialog 
    getDialog().setTitle("Backup & Restore"); 
    getDialog().setCancelable(true); 

    View v = inflater.inflate(R.layout.backup_restore, container, false); 
    TextView msg = (TextView) v.findViewById(R.id.br_label_message); 
    msg.setText("Backups are placed in the Downloads Directory:\n" + BACKUP_PATH.getAbsolutePath()); 
    // TextView files_label = (TextView) v.findViewById(R.id.label_restore); 
    Spinner files = (Spinner) v.findViewById(R.id.br_restore_file); 

    if (BACKUP_PATH.exists()) { 
     FilenameFilter filter = new FilenameFilter() { 
      public boolean accept(File dir, String filename) { 
       File sel = new File(dir, filename); 
       return filename.contains(FTYPE) || sel.isDirectory(); 
      } 
     }; 
     mFileList = BACKUP_PATH.list(filter); 
    } else { 
     mFileList = new String[0]; 
    } 

    ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getActivity(), android.R.layout.simple_spinner_item, mFileList); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    files.setAdapter(adapter); 
    files.setOnItemSelectedListener(this); 

    Button backup = (Button) v.findViewById(R.id.br_backup_btn); 
    Button restore = (Button) v.findViewById(R.id.br_restore_btn); 
    Button cancel = (Button) v.findViewById(R.id.br_cancel_btn); 

    backup.setOnClickListener(this); 
    restore.setOnClickListener(this); 
    cancel.setOnClickListener(this); 

    return v; 
} 

यह लेआउट है निश्चित रूप से निश्चित नहीं है लेकिन आप टी पर getWindow को कॉल करने का प्रयास कर सकते हैं वह संवाद और फिर setLayout (चौड़ाई, ऊंचाई)

getDialog().getWindow().setLayout(300,300); 
+0

धन्यवाद ब्रैम, लेकिन यह पता चला LinearLayout' मैं 'के साथ एक मुद्दा इसे 'रिलेवेटिव लयआउट' पर स्विच किया गया और सामग्री 'संवाद' सामग्री फिट करने के लिए आकार बदलने लगता है। – Ali

0

मैं अपने LinearLayout टैग के ऊपरी भाग नहीं दिख रहा है, लेकिन मैं ऐसे मामलों में जहां यह सब की जरूरत थी

android:orientation="vertical" 

XML विशेषता था देखा है। यह सिरदर्द का कारण बन सकता है लेकिन इसे ठीक करने के लिए सौभाग्य से आसान है।

5

आप अपने dialogFragment की onResume में लेआउट के आकार जोड़ने में यह लेआउट के सभी प्रकार के साथ काम कर सकते हैं:

@Override 
    public void onResume() 
    { 
     super.onResume(); 
     Window window = getDialog().getWindow(); 
     window.setLayout(300, 300); 
     window.setGravity(Gravity.CENTER); 
} 
+0

100 में से समाधान मैं इस बेवकूफ समस्या के लिए एसओ पर पाया है, यह वह है जिसने काम किया और मुझे एक और दिन देखा। – Gyome

+0

मेरे लिए काम किया :) –

+0

@Gyome कृपया इस प्रश्न का संदर्भ लें - https: // stackoverflow।com/प्रश्न/45494644/कैसे करने वाली सेट-ऊंचाई के-संवाद-टुकड़ा-सही रूप में एंड्रॉयड –

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