2

私はカスタムダイアログ用にこのレイアウトを持っています。これは通常のデバイスと小さなデバイスではうまく機能しますが、大きなデバイスの場合、幅が幅に収まりません (親を埋める) が、手動で dp の値を与えてサイズを達成することができます欲しいです。親がデフォルトで機能しない理由を知りたいです。

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#f70000"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <ScrollView
            android:id="@+id/scrollView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/textViewInvoice"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"

                    android:textColor="#FFFFFF"
                    android:textAppearance="?android:attr/textAppearanceSmall" />

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" >

                    <Button
                        android:id="@+id/buttonPrint"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/buttonPrint" />

                    <Button
                        android:id="@+id/buttonCancel"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/buttonCancel" />

                </LinearLayout>

            </LinearLayout>
        </ScrollView>

    </LinearLayout>
4

3 に答える 3

2

これを使って 。それはあなたを助けるかもしれません

    WindowManager.LayoutParams lp1 = new WindowManager.LayoutParams();

                lp1.width = WindowManager.LayoutParams.FILL_PARENT;// change this option to your convienience
                lp1.height = WindowManager.LayoutParams.WRAP_CONTENT;
                Your dailog.getWindow().setAttributes(lp1);
于 2013-11-15T05:55:10.057 に答える
0

その理由は、ビューを含むウィンドウが原因である可能性があります。ダイアログは通常これを行わないため、デフォルトでは全幅を占めません。全幅を占めるようにウィンドウを明示的に設定する必要があります。これは、ビューが描画される前の計算に影響します。show() の前に呼び出す必要があるもの。

show を呼び出すと、ウィンドウ内のコンテンツのレイアウトが描画され始めることに注意してください。

于 2013-11-15T06:35:44.030 に答える