Настройка размера настраиваемого диалогового окна в 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>
Я хочу настроить размер диалогового окна, пожалуйста, помогите. заранее спасибо
Ответы
Ответ 1
Я не уверен, что это сработает для вашей ситуации, но если вы хотите установить его на полную ширину или что-то подобное, вам нужно получить текущее окно для активности и установить его параметры макета следующим образом:
myDialog.show();
Window window = myDialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
Изменить
FILL_PARENT
устарел, используйте вместо этого
window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
Ответ 2
Я решил это, удалив строку заголовка с помощью этого кода
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
и добавление дополнений к элементам в моем макете, чтобы растянуть диалоговое окно по своему вкусу.
Ответ 3
Вам просто нужно добавить стиль "Theme_AppCompat_Light_Dialog_Alert" в ваш диалог следующим образом:
Dialog dialog = new Dialog(context, R.style.Theme_AppCompat_Light_Dialog_Alert);
и ваше диалоговое окно выглядит как обычный диалог оповещений
Ответ 4
<?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();