Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adjusting size of custom dialog box in android

Tags:

I am building an custom alert dialog box for my application i have written the code and its working but the only problem is its size it is not adjusting according to my content in dialog box. below is my code:

public class CustomDialogBoxActivity extends Activity {     /** Called when the activity is first created. */     @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);          Button button = (Button)findViewById(R.id.Button01main);          button.setOnClickListener(new OnClickListener() {              @Override             public void onClick(View v) {                 // TODO Auto-generated method stub                 final Dialog myDialog = new Dialog(CustomDialogBoxActivity.this);                 myDialog.setContentView(R.layout.dialog_sms_layout);                 myDialog.setTitle("Select any one");                   Button ok = (Button)myDialog.findViewById(R.id.buttonOK);                 final RadioGroup radioGrp = (RadioGroup)myDialog.findViewById(R.id.radioGroupSmsDialog);                  final CheckBox mob1 = (CheckBox)myDialog.findViewById(R.id.checkBoxMob1);                 final CheckBox mob2 = (CheckBox)myDialog.findViewById(R.id.checkBoxMob2);                 mob1.setText("9029691986");                 mob2.setText("99263911766");                  ok.setOnClickListener(this);                  ok.setOnClickListener(new OnClickListener() {                      @Override                     public void onClick(View v) {                         // TODO Auto-generated method stub                         if(mob1.isChecked() && mob2.isChecked()) {                             if(radioGrp.getCheckedRadioButtonId() == R.id.radioSms) {                                 String[] phoneArray = {mob1.getText().toString(),mob2.getText().toString()};                                  Log.v("MOB1",mob1.getText().toString());                                 Log.v("MOB2",mob2.getText().toString());                                 Log.v("Mobile No", ""+phoneArray.toString());                                 sendSms("SMS Message",phoneArray);                              }else if(radioGrp.getCheckedRadioButtonId() == R.id.radioBusinessCard) {                                 String[] phoneArray = {mob1.getText().toString(),mob2.getText().toString()};                                  Log.v("MOB1",mob1.getText().toString());                                 Log.v("MOB2",mob2.getText().toString());                                 Log.v("Mobile No", ""+phoneArray.toString());                                 sendSms("SMS Business Card",phoneArray);                             }                         }else if(mob1.isChecked() && !mob2.isChecked()) {                             if(radioGrp.getCheckedRadioButtonId() == R.id.radioSms) {                                 String[] phoneArray = {mob1.getText().toString()};                                  Log.v("MOB1",mob1.getText().toString());                                                                 Log.v("Mobile No", ""+phoneArray.toString());                                 sendSms("SMS Message",phoneArray);                              }else if(radioGrp.getCheckedRadioButtonId() == R.id.radioBusinessCard) {                                 String[] phoneArray = {mob1.getText().toString()};                                  Log.v("MOB1",mob1.getText().toString());                                                                 Log.v("Mobile No", ""+phoneArray.toString());                                 sendSms("SMS Business Card",phoneArray);                             }                          }else if(!mob1.isChecked() && mob2.isChecked()) {                             if(radioGrp.getCheckedRadioButtonId() == R.id.radioSms) {                                 String[] phoneArray = {mob2.getText().toString()};                                  Log.v("MOB2",mob2.getText().toString());                                 Log.v("Mobile No", ""+phoneArray.toString());                                 sendSms("SMS Message",phoneArray);                              }else if(radioGrp.getCheckedRadioButtonId() == R.id.radioBusinessCard) {                                 String[] phoneArray = {mob2.getText().toString()};                                  Log.v("MOB2",mob2.getText().toString());                                 Log.v("Mobile No", ""+phoneArray.toString());                                 sendSms("SMS Business Card",phoneArray);                             }                          }else if(!mob1.isChecked() && !mob2.isChecked()) {                             Toast.makeText(getApplicationContext(), "Select atleast one number", Toast.LENGTH_SHORT).show();                         }                                            }                 });                 myDialog.show();             }          });     }      public void sendSms(String message,String[] phoneNumber) {          Intent smsIntent = new Intent(Intent.ACTION_VIEW);         smsIntent.setData(Uri.parse("sms:"));         smsIntent.putExtra("sms_body", message);         smsIntent.putExtra("address", phoneNumber);         startActivity(smsIntent);            } } 

This is the output that i'm getting on button click

This is my main.xml

<?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="fill_parent"     android:orientation="vertical" >      <TextView         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="This is my main activity, from here, I want to display a dialog,                          after the user clicked the button below this text." />      <Button         android:id="@+id/Button01main"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Show Dialog" />  </LinearLayout> 

and this is my dialog_sms_layout

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:orientation="vertical" >  <RadioGroup         android:id="@+id/radioGroupSmsDialog"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:orientation="horizontal"          >          <RadioButton             android:id="@+id/radioSms"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:checked="true"             android:text="SMS" />          <RadioButton             android:id="@+id/radioBusinessCard"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Card" />     </RadioGroup>  <CheckBox     android:id="@+id/checkBoxMob1"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:checked="true"     android:text="Primary" />  <CheckBox     android:id="@+id/checkBoxMob2"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="Secondary" />  <Button     android:id="@+id/buttonOK"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_gravity="center_horizontal"     android:text="OK" />  </LinearLayout> 

I want to adjust the dialog box size please help. thanks in advance

like image 205
prateek Avatar asked Apr 20 '12 07:04

prateek


People also ask

How do I make alert dialog fill 90% of screen size?

Builder adb = new AlertDialog. Builder(this); Dialog d = adb. setView(new View(this)). create(); // (That new View is just there to have something inside the dialog that can grow big enough to cover the whole screen.)

How do I set the height and width of AlertDialog in android programmatically?

You just have to give android:theme="@android:style/Theme. Dialog" in the android manifest. xml for your activity and can write the whole layout as per your requirement. you can set the height and width of your custom dialog from the Android Resource XML.


1 Answers

I'm not sure if this will work for your situation, but if you want to set it to full width or something similar, you need to get the current Window for the activity and set it's layout params like so:

myDialog.show(); Window window = myDialog.getWindow(); window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 

Edit

FILL_PARENT has been deprecated, use instead

window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
like image 67
hooked82 Avatar answered Oct 29 '22 17:10

hooked82