J'essaie de créer un DialogFragment avec une largeur de MATCH_PARENT afin que la boîte de dialogue soit presque en plein écran (laissant le remplissage sur les bords pour l'aspect flottant). J'ai vu cette solution Full Screen DialogFragment dans Android mais j'essaie d'éviter le bidouillage de la définition de la largeur à 1000dp. Avec ma mise en page actuelle, que j'utilise FILL_PARENT ou MATCH_PARENT, il semble que la largeur et la hauteur soient définies sur WRAP_CONTENT.
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
J'ai utilisé cette solution pour Dialog (pas DialogFragment) et cela fonctionne comme prévu:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
c'est parfait pour moi. when s'étend DialogFragment remplace onCreateView()
... applique toute la logique
dialogue rendre plein écran juste remplacer cette méthode
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
// the content
final RelativeLayout root = new RelativeLayout(getActivity());
root.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
// creating the fullscreen dialog
final Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(root);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.YELLOW));
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
return dialog;
}
essayez de passer à RelativeLayout au lieu de LinearLayout. Cela a fonctionné dans mon cas
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NO_TITLE,Android.R.style.Theme_Holo_Light);
}
cette réponse m'aidez Comment définir la largeur et la hauteur de DialogFragment?
int width = activity.getResources().getDisplayMetrics().widthPixels;
int height = activity.getResources().getDisplayMetrics().heightPixels;
content.setLayoutParams(new LinearLayout.LayoutParams(width, height));
La meilleure solution que j'ai trouvée consistait à définir la largeur ou minWidth sur une valeur arbitrairement grande pour qu'elle remplisse l'écran. Je n'aime pas cette solution, mais je n'ai rien vu de mieux.
J'ai répondu à cette question avec des explications, c'est le moyen le plus court et le plus efficace. S'il vous plaît vérifier Dans ce fil
J'espère que cela t'aides :)
Dans mon code, je voulais une boîte de dialogue plein écran, mais je vis toujours la barre de notification en haut de l'écran, donc j'utilise:
setStyle(DialogFragment.STYLE_NORMAL, Android.R.style.Theme_Black_NoTitleBar);
Cela le rend plein écran, mais je n'utilise pas un style plein écran pour que je garde la barre de notification.
J'espère que ça aide quelqu'un!
Vous pouvez aussi faire quelque chose comme-
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
setStyle(STYLE_NO_TITLE, Android.R.style.Theme_Material_Light_NoActionBar_Fullscreen);
} else {
setStyle(STYLE_NO_TITLE, Android.R.style.Theme_DeviceDefault_Light_NoActionBar);
}
super.onCreate(savedInstanceState);
}
Grâce à cela, vous pourrez également voir la barre d'état colorée pour les versions> = Lollipop
Pour avoir une boîte de dialogue en plein écran, vous devez utiliser
public class CustomDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout to use as dialog or embedded fragment
return inflater.inflate(R.layout.purchase_items, container, false);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
}
Et pour montrer ce dialogue:
CustomDialogFragment newFragment = new CustomDialogFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
// To make it fullscreen, use the 'content' root view as the container
// for the fragment, which is always the root view for the activity
fragmentManager.beginTransaction().add(Android.R.id.content, newFragment).commit();
ATTENTION: Vous ne pouvez pas utiliser le code suivant pour afficher la boîte de dialogue. Sinon, la boîte de dialogue sera affichée au centre de l'écran et non en plein écran.
//don't show dialog like this
newFragment.show(fragmentManager, "dialog");
Sur DialogFragment travaux suivants. Dans onCreateView()
ajouter ce qui suit
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//…
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
//…
return view;
}