设置自定义对话框高度和宽度

时间:2014-06-17 13:05:16

标签: android xml dialog

我正在制作一个自定义对话框,我希望高度和宽度默认适合所有屏幕尺寸。

但事实并非如此。 尽管如此,对话框看起来很小。 这是对话框的XML

<?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:background="#D24379"
android:orientation="vertical" >

<TextView
    android:id="@+id/txt_dia"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_margin="10dp"
    android:textColor="@android:color/white"
    android:textSize="15dp"
    android:textStyle="bold" >
</TextView>

 <LinearLayout
    android:id="@+id/layButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/yesButton"
        android:layout_width="0.0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:background="#ffffff"
        android:text="@string/yes" />

    <Button
        android:id="@+id/noButton"
        android:layout_marginLeft="5dp"
        android:layout_width="0.0dip"
        android:background="#ffffff"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:text="@string/no" />
</LinearLayout>

这是我的对话类

public class CustomDialogClass extends Dialog implements
            android.view.View.OnClickListener {

        public Activity c;
        public Dialog d;
        public Button yes, no;
        public TextView content;

        public CustomDialogClass(Activity a) {
            super(a);
            this.c = a;
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.custom_dialog);
            yes = (Button) findViewById(R.id.yesButton);
            no = (Button) findViewById(R.id.noButton);
            content=(TextView)findViewById(R.id.txt_dia);
            yes.setOnClickListener(this);
            no.setOnClickListener(this);

        }

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.yesButton:

                break;
            case R.id.noButton:
                dismiss();
                break;
            default:
                break;
            }
            dismiss();
        }
      }

如何将高度和宽度设置为默认大小,使其在所有屏幕尺寸上都显示为完美。

我正在进行一个非常小的对话。

5 个答案:

答案 0 :(得分:15)

不使用Dialog类,请尝试此类:

    public class MainActivity extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);


                     ShowDialog();

        }

        private void ShowDialog() {
                // TODO Auto-generated method stub
                final Dialog dialog = new Dialog(context,
                        android.R.style.Theme_Translucent_NoTitleBar);
                dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
                dialog.setContentView(R.layout.custom_dialog);
                WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
                lp.copyFrom(dialog.getWindow().getAttributes());
                lp.width = WindowManager.LayoutParams.MATCH_PARENT;
                lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
                lp.gravity = Gravity.CENTER;

                dialog.getWindow().setAttributes(lp);

                Button yes = (Button) dialog.findViewById(R.id.yesButton);
                yes.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub

                        dialog.dismiss();

                    }
                });

                Button no = (Button) dialog.findViewById(R.id.noButton);
                no.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // TODO Auto-generated method stub
                        Intent i = new Intent(
                                Intent.ACTION_PICK,

                        dialog.dismiss();

                    }
                });

                  TextView content =(TextView) dialog.findViewById(R.id.txt_dia);



                dialog.show();
            }
}

答案 1 :(得分:4)

在课堂上扩展Dialog:

public MyPopUp(MainActivity activity, String sPrm) {
    super(activity);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.alert_dialog);
    LinearLayout bedLcl = (LinearLayout) findViewById(R.id.bed);
    TextView textLcl = (TextView) findViewById(R.id.dialog_text);
    textLcl.setText(sPrm);
    setOnCancelListener(this);
    DisplayMetrics displayMetrics = new DisplayMetrics();
 activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
    int widthLcl = (int) (displayMetrics.widthPixels*0.9f);
    int heightLcl = (int) (displayMetrics.heightPixels*0.9f);
    FrameLayout.LayoutParams paramsLcl = (FrameLayout.LayoutParams) 
    bedLcl.getLayoutParams();
    paramsLcl.width = widthLcl;
    paramsLcl.height =heightLcl ;
    paramsLcl.gravity = Gravity.CENTER;
    show();
    Window window = getWindow();
    bedLcl .setLayoutParams(paramsLcl);
    window .setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));}

enter image description here

正确显示所有屏幕。

答案 2 :(得分:4)

this.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 放入自定义对话框的onCreate()

答案 3 :(得分:1)

您可以向LinearLayout添加android:gravity="center",然后在LinearLayout上设置最小高度,例如android:minHeight="120dp"。然后,您可以在各种设备上测试您的布局并进行调整,直到您获得适用于所有屏幕尺寸的内容:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="120dp"
android:gravity="center"
android:background="#D24379"
android:orientation="vertical" >

答案 4 :(得分:0)

我现在尝试改变你的平局

 <?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="150dp"
        android:background="#D24379"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txt_dia"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:layout_marginTop="10dp"
            android:layout_weight="0.20"
            android:text="Are you good?"
            android:textColor="@android:color/white"
            android:textSize="15dp"
            android:textStyle="bold" />

        <LinearLayout
            android:id="@+id/layButton"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:layout_margin="5dp"
            android:gravity="center"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/yesButton"
                android:layout_width="0.0dip"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:background="#ffffff"
                android:text="YES" />

            <Button
                android:id="@+id/noButton"
                android:layout_width="0.0dip"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_weight="1.0"
                android:background="#ffffff"
                android:text="NO" />
        </LinearLayout>

    </LinearLayout>