Код: Выделить всё
private void showFilterBottomSheet() {
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(FeeDefaulters.this);
View bottomSheetView = getLayoutInflater().inflate(R.layout.bottom_sheet_filters, null);
campusInputLayout = bottomSheetView.findViewById(R.id.campusInputLayout);
classInputLayout = bottomSheetView.findViewById(R.id.classInputLayout);
sectionInputLayout = bottomSheetView.findViewById(R.id.sectionInputLayout);
campusAutoCompleteTextView = bottomSheetView.findViewById(R.id.campusAutoCompleteTextView);
classAutoCompleteTextView = bottomSheetView.findViewById(R.id.classAutoCompleteTextView);
sectionAutoCompleteTextView = bottomSheetView.findViewById(R.id.sectionAutoCompleteTextView);
buttonApplyFilters = bottomSheetView.findViewById(R.id.buttonApplyFilters);
updateSelectedItemsText(campusAutoCompleteTextView, selectedCampuses);
updateSelectedItemsText(classAutoCompleteTextView, selectedClasses);
updateSelectedItemsText(sectionAutoCompleteTextView, selectedSections);
campusAutoCompleteTextView.setOnClickListener(v -> showMultiSelectBottomSheet("Campus", allCampuses, selectedCampuses, campusAutoCompleteTextView));
classAutoCompleteTextView.setOnClickListener(v -> showMultiSelectBottomSheet("Class", allClasses, selectedClasses, classAutoCompleteTextView));
sectionAutoCompleteTextView.setOnClickListener(v -> showMultiSelectBottomSheet("Section", allSections, selectedSections, sectionAutoCompleteTextView));
buttonApplyFilters.setOnClickListener(v -> {
Toast.makeText(FeeDefaulters.this, "Filters Applied", Toast.LENGTH_SHORT).show();
loadDataForTables();
bottomSheetDialog.dismiss();
});
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}
Код: Выделить всё
private void showMultiSelectBottomSheet(String filterType, List allItems, List selectedItems, TextView textViewToUpdate) {
BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(FeeDefaulters.this);
View bottomSheetView = getLayoutInflater().inflate(R.layout.bottom_sheet_multiselect, null);
RecyclerView recyclerView = bottomSheetView.findViewById(R.id.recyclerViewMultiSelect);
Button buttonApplyMultiSelect = bottomSheetView.findViewById(R.id.buttonApplyMultiSelect);
ImageButton closebtn = bottomSheetView.findViewById(R.id.closebtn);
EditText searchEditText = bottomSheetView.findViewById(R.id.searchEditText);
CheckBox selectAllCheckbox = bottomSheetView.findViewById(R.id.selectAllCheckbox);
closebtn.setOnClickListener(v -> bottomSheetDialog.dismiss());
bottomSheetDialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN |
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
MultiSelectAdapter adapter = new MultiSelectAdapter(allItems, selectedItems);
recyclerView.setAdapter(adapter);
selectAllCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> {
adapter.selectAll(isChecked);
});
adapter.setOnSelectionChangedListener(selectedItemsCount -> {
selectAllCheckbox.setChecked(selectedItemsCount == allItems.size());
});
buttonApplyMultiSelect.setOnClickListener(v -> {
updateSelectedItemsText(textViewToUpdate, adapter.getSelectedItems());
bottomSheetDialog.dismiss();
});
bottomSheetDialog.setOnShowListener(dialogInterface -> {
BottomSheetDialog dialog = (BottomSheetDialog) dialogInterface;
FrameLayout bottomSheet = dialog.findViewById(com.google.android.material.R.id.design_bottom_sheet);
if (bottomSheet != null) {
BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet);
behavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
}
searchEditText.postDelayed(() -> {
InputMethodManager imm = (InputMethodManager) searchEditText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(searchEditText, InputMethodManager.SHOW_IMPLICIT);
}
searchEditText.requestFocus();
}, 1000);
});
// Search functionality
searchEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
adapter.filter(s.toString());
}
@Override
public void afterTextChanged(Editable s) { }
});
bottomSheetDialog.setContentView(bottomSheetView);
bottomSheetDialog.show();
}

Я установил softInputMode с помощью SOFT_INPUT_ADJUST_RESIZE | SOFT_INPUT_STATE_VISIBLE, но, похоже, это не помогает. EditText получает фокус, но клавиатура не появляется.
Подробнее здесь: https://stackoverflow.com/questions/790 ... eet-dialog