Настройка размера настраиваемого диалогового окна в android

Я создаю настраиваемое диалоговое окно оповещения для своего приложения, я написал код и его работу, но единственная проблема заключается в том, что он не настраивается в соответствии с моим контентом в диалоговом окне. Ниже мой код:

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

Это результат, который я получаю нажатием кнопки.

Это мой 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> 

И это мой 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> 

Я хочу настроить размер диалогового окна, пожалуйста, помогите. заранее спасибо

Я не уверен, что это сработает для вашей ситуации, но если вы хотите установить его на полную ширину или что-то подобное, вам нужно получить текущее окно для активности и установить его параметры макета следующим образом:

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

редактировать

FILL_PARENT устарел, используйте вместо этого

 window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

Я решил это, удалив строку заголовка с помощью этого кода

  getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); 

И добавление дополнений к элементам в моем макете, чтобы растянуть диалоговое окно по своему вкусу.

Вам просто нужно добавить стиль «Theme_AppCompat_Light_Dialog_Alert» в ваш диалог следующим образом:

 Dialog dialog = new Dialog(context, R.style.Theme_AppCompat_Light_Dialog_Alert); 

И ваш диалог выглядит как обычный диалог предупреждения

 <?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:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:gravity="center" android:text="Write Feedback" android:textColor="@color/colorAccent" android:textSize="22sp" android:textStyle="bold" /> <RatingBar android:id="@+id/rating_bar" style="?android:attr/ratingBarStyleIndicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="8dp" android:isIndicator="false" android:numStars="5" /> <EditText android:id="@+id/inputSearchEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" android:background="@drawable/edittextstyle" android:gravity="center" android:hint="@string/write_feedback" android:inputType="text" android:minHeight="100dp" android:padding="16dp" /> <Button android:id="@+id/submit_feedback_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="16dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" android:background="@drawable/background_stroke" android:text="submit" android:textColor="@android:color/white" /> </LinearLayout> Dialog class :- dialog = new Dialog(mContext); dialog.setContentView(R.layout.dialog_feedback); dialog.show();