Я хочу сделать всплывающее меню/окно, которое не закрывает полностью активити(есть отступы) + при нажатии кнопки в этом самом меню оно закрывалось бы
Ну и упрощенный пример.
Создаем подкласс DialogFragment, в рамках вопроса важными являются методы onStart() и onCreateDialog(), ими определяются размеры, вид, поведение диалога. Передачу данных в диалог, осуществляем аналогично обычным фрагментам, опять же по простому, в демонстрационных целях, newInstance(...), onCreateDialog(...)
public class SomeDialogFragment extends DialogFragment {
private static final int MARGIN_H = 100;
private static final int MARGIN_V = 200;
private String name;
static SomeDialogFragment newInstance(String text) {
SomeDialogFragment fragment = new SomeDialogFragment();
Bundle args = new Bundle();
args.putString("name", text);
fragment.setArguments(args);
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
//dialog.setCancelable(true);
//dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
//dialog.getWindow().setBackgroundDrawable(?);
name = getArguments().getString("name");
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.view_something, container, false);
setupUI(name);
return view;
}
@Override
public void onStart() {
super.onStart();
if (getDialog() != null) {
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
int width = displayMetrics.widthPixels;
int height = displayMetrics.heightPixels;
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(getDialog().getWindow().getAttributes());
lp.height = height - MARGIN_V;
lp.width = width - MARGIN_H;
// На "весь" экран, поверх Activity, с отступами от края экрана
getDialog().getWindow().setAttributes(lp);
}
}
private void setupUI(String name){
//UI
}
}
Когда надо вызываем:
void showSomeDialog() {
DialogFragment someDialog = SomeDialogFragment.newInstance("Привет, я dialog fragment, как ты хотел");
someDialog.show(getFragmentManager(), "somedialog");
}
А "кнопку" добавить, думаю не проблема.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Задача: Юзер в Activity вводит свой email и нажимает кнопкуПри нажатии с помощью Retrofit делается запрос на сервер, который высылает на email юзера пароль...
Имеется три метода, которые в результате своей работы возвращают массивы типа doubleЗаполнение массива данными из одного метода выглядит у меня...
Пишу web-сервер на JavaНужно считать и послать файл, который находится в другом каталоге