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

3

尝试这个...

    Dialog dialog = new Dialog(YourActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    Window window = dialog.getWindow();
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    RelativeLayout lay = new RelativeLayout(YourActivity.this);
    View dialogView = inflater.inflate(R.layout.your_dialog_layout,
            lay);
    dialog.setContentView(dialogView);
    window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
于 2014-11-11T05:44:45.020 回答
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

原因可能是因为包含 View 的 Window。默认情况下,它没有占据整个宽度,因为对话框通常不会这样做。您必须显式设置窗口以占据全角;这会影响绘制视图之前的计算。应该在 show() 之前调用哪个。

请记住,当您调用 show 时,窗口内的内容布局将开始绘制。

于 2013-11-15T06:35:44.030 回答