Setting the height and width of a custom dialog

I create my own dialog box in which I want the default height and width to fit all screen sizes.

But this does not happen. The dialog looks very small. This is XML for dialogue.

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

this is my dialogue class

 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(); } } 

How to set the height and width to display the default size so that it looks perfect across the entire screen size.

I get a very small dialogue.

+7
android xml dialog
source share
5 answers

I changed your bid, try now

  <?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> 
+1
source share

To not use the dialog class, try this class:

  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(); } } 
+10
source share

In a class extending the 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

Correct for all screens.

+2
source share

Put this.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); into your own onCreate() dialog

+1
source share

You can add android:gravity="center" to LinearLayout, and then set the minimum height to LinearLayout, for example, android:minHeight="120dp" . Then you can test your layout on different devices and configure it until you get something that works on all screen sizes:

 <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" > 
0
source share

All Articles