Faire bottomSheetDialog plein écran sur la barre de statut
J'ai récemment utilisé android.de soutien.de la conception.widget de.BottomSheetDialogFragment. Je voulais faire quelque chose qui est similaire à la Google contact application, ses BottomSheet de superposer la barre d'outils et barre d'état. Cependant, lorsque j'utilise le BottomSheetDialogFragment à mettre en œuvre, il s'avère à présent:
Comme vous pouvez le voir, l'activité de la barre d'outils est toujours visible. Voici mon code de la BottomSheetDialogFragment
:
public class KeyDetailFragment extends BottomSheetDialogFragment {
private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if (newState == BottomSheetBehavior.STATE_HIDDEN) {
dismiss();
}
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
}
};
@Override
public void setupDialog(Dialog dialog, int style) {
super.setupDialog(dialog, style);
View contentView = View.inflate(getActivity(), R.layout.sheet_key, null);
dialog.setContentView(contentView);
View parent = (View) contentView.getParent();
parent.setFitsSystemWindows(true);
BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(parent);
contentView.measure(0, 0);
bottomSheetBehavior.setPeekHeight(contentView.getMeasuredHeight());
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) parent.getLayoutParams();
if (params.getBehavior() instanceof BottomSheetBehavior) {
((BottomSheetBehavior)params.getBehavior()).setBottomSheetCallback(mBottomSheetBehaviorCallback);
}
params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
parent.setLayoutParams(params);
}
}
J'ai renvoyé à la source et j'ai trouvé un attribut qui m'intéresse:
private static int getThemeResId(Context context, int themeId) {
if (themeId == 0) {
//If the provided theme is 0, then retrieve the dialogTheme from our theme
TypedValue outValue = new TypedValue();
if (context.getTheme().resolveAttribute(
R.attr.bottomSheetDialogTheme, outValue, true)) {
themeId = outValue.resourceId;
} else {
//bottomSheetDialogTheme is not provided; we default to our light theme
themeId = R.style.Theme_Design_Light_BottomSheetDialog;
}
}
return themeId;
}
l'attribut bottomSheetDialogTheme
ici peut changer le bas de la feuille de style, mais je ne sais pas comment le changer, et je doute que ce serait le travail. Quelqu'un peut-il me donner la solution à propos de la réalisation de ce qu'il est possible de superposer la barre d'outils et barre d'état?
Non, je n'ai pas encore trouvé s'il avait passé près de 3 mois
Je pense que la raison est l'altitude. Vérifiez ceci: stackoverflow.com/questions/35711808/....
Je vais avoir le même problème. mais pas en mesure de trouver une bonne solution.
OriginalL'auteur Jian Guo | 2016-04-05
Vous devez vous connecter pour publier un commentaire.
De l'essayer. Il fonctionne pour moi.
Merci @LOG_TAG! 🙂
Une chose à noter, avec cette solution, c'est la displayMetrics.heightPixels comprendra la barre de notification de la hauteur afin de découper le fond légèrement. J'ai utilisé pour calculer la hauteur de la barre de notification.
private int getStatusBarHeight() { Rect rectangle = new Rect(); Window window = getActivity().getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectangle); return rectangle.top; }
Oups... je pense que beaucoup de travail est fait ici. Quelqu'un peut trouver une meilleure solution?
Pourriez-vous expliquer plus sur ce codes?
OriginalL'auteur Vaigunth
N'a pas été en mesure de trouver la solution à ce problème, mais peut suggérer un autre qui m'a aidé à servir le même but. Voici la référence :
http://www.hidroh.com/2016/06/17/bottom-sheet-everything/
L'article explique la création d'un fond de feuille d'activité et de l'ajout de la toile de fond de l'ombre.
OriginalL'auteur nipun.birla