Изменение положения окна на экране Android
Я сделал простой AlertDialog в своем активность:
View view = layoutInflater.inflate(R.layout.my_dialog, null);
AlertDialog infoDialog = new AlertDialog.Builder(MyActivity.this)
.setView(view)
.create();
infoDialog.show();
с вышеуказанным кодом, показывает в (О) в центре экрана.
мне интересно, как я могу настроить положение диалогового окна, чтобы оно отображалось только под верхней панелью действий ? (Есть ли в любом случае, чтобы изменить гравитацию или что-то из диалога?) и как это сделать на основе моего кода??
7 ответов:
я использовал этот код, чтобы показать диалоговое окно в нижней части экрана:
Dialog dlg = <code to create custom dialog>; Window window = dlg.getWindow(); WindowManager.LayoutParams wlp = window.getAttributes(); wlp.gravity = Gravity.BOTTOM; wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND; window.setAttributes(wlp);этот код также предотвращает Android от затемнения фона диалога, если вам это нужно. Вы должны иметь возможность изменить параметр гравитации, чтобы переместить диалоговое окно о
private void showPictureialog() { final Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); // Setting dialogview Window window = dialog.getWindow(); window.setGravity(Gravity.CENTER); window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); dialog.setTitle(null); dialog.setContentView(R.layout.selectpic_dialog); dialog.setCancelable(true); dialog.show(); }вы можете настроить диалог на основе параметров гравитации и компоновки измените гравитацию и параметр компоновки на основе ваших требований
для меня это сработало довольно хорошо, когда я пытался разместить свой диалог где-то точно в нижней части textview, где он выбирается.
public void setPosition(int yValue) { Window window = getWindow(); WindowManager.LayoutParams param = window.getAttributes(); param.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL; param.y = yValue; window.setAttributes(param); window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); }
Я нашел этот фрагмент кода из @gypsicoder code здесь
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { if(item == 0) { } else if(item == 1) { } else if(item == 2) { } } }); AlertDialog dialog = builder.create(); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes(); wmlp.gravity = Gravity.TOP | Gravity.LEFT; wmlp.x = 100; //x position wmlp.y = 100; //y position dialog.show();здесь значение позиции x-это пиксели слева направо. Для y значение позиции снизу вверх.
новая
BottomSheetDialog:BottomSheetDialog dialog = new BottomSheetDialog(YourActivity.this); dialog.setContentView(YourView); dialog.show();
Comments