2012-11-29 7 views
8

DialogFragmentを使用していて、layout_widthとminWidthを固定して強制的に多くの制約をかけても、LinearLayoutのlayout_width = match_parentを作成すると幅が常にフルスクリーンになります親ビューの、又は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; 
    } 
} 

O私はこの仕事をすることができますNLY方法は大丈夫動作しますが、ダイアログの他の部分のためのいくつかの結果を持ってい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> 

をハッキングDIMEN/dialog_width

@」のLinearLayout layout_width =インナーを設定することです。 これはAndroidのバグですか?

+0

使用RelativeLayoutにすべてのものを置く代わりに、リニア – Sameer

答えて

2

私はこれについてのドキュメントは見ていませんが、ダイアログが作成されたときに、ルートレイアウトのlayout_widthとlayout_heightパラメータが 'wrap_content'でオーバーライドされていると思われます。

実際にそれが本当であるかどうかはわかりませんが、私が見たレイアウトの動作によって、それは正しいことが示唆されます。とにかく、私はこれが正しいと仮定して、適切にレイアウトするためのダイアログを得ました。

可能であれば、内部レイアウトにもwrap_contentを試してみるとよいでしょう。ハードコードされた幅は、複数のデバイスでうまく機能しない傾向があります。

-2

することは一つだけのLinearLayoutこの

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

使用してあなたのコードを交換し、それ

関連する問題