2012-11-29 5 views
8

DialogFragment kullanıyorum ve iç LinearLayout öğesinin layout_width = match_parent öğesini oluşturduğumda genişliğin her zaman tam ekran olmasını sağladım, layout_width ve minWidth öğelerini sabitleyerek kaç tane zorlama uygulayacağım önemli değil üst görünümü veya CreateView Düzen DIMENS()DialogFragment boyutu (genişlik) yok sayılır

ayar dialog.xml arasında

<?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; 
    } 
} 

o Bu işi yapabilir nly yolu = "@ Dimen/dialog_width

kesmek dialog.xml tamam çalışır, ancak iletişim kutusunun diğer bölümleri için bazı sonuçları vardır

<?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> 

iç LinearLayout layout_width ayarlayarak gereğidir. Android'de bu bir hata mı?

+0

Kullanım RelativeLayout her şeyi koymak yerine Doğrusal – Sameer

cevap

2

Bu konuyla ilgili herhangi bir belge görmedim, ancak (muhtemelen SO üzerinde) bir kökeni düzen_width ve layout_height parametrelerinin diyalog oluşturulduğunda 'wrap_content' ile aşırı yüklendiğini gördüm.

Bunun gerçekten doğru olup olmadığından emin değilim, ancak gördüğüm mizanpaj davranışı bunun doğru olduğunu gösteriyor. Her neyse, bu durumun var olduğunu farz ederek diyaloglarımı düzgün bir şekilde düzenledim.

Mümkün olan her durumda, wrap_content öğelerini iç düzenlerinizde de denemek isteyebilirsiniz. Sabit kodlu genişlikler birden fazla cihazda iyi çalışma eğiliminde değildir.

-2

tek LinearLayout bu

<?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> 

Kullanımına size kodu değiştirin ve