・ Afficher le contenu sur le Web dans une boîte de dialogue -La largeur du dialogue correspond à 90% de la largeur de l'écran ・ La hauteur de la boîte de dialogue peut être modifiée en fonction de la taille du contenu
WebViewDialogFragment.java
public class WebViewDialogFragment extends DialogFragment {
//Omettre les choses non pertinentes
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
binding = DialogWebViewBinding.inflate(inflater, container, false);
String url = "https://hogehoge";
binding.webview.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view , String url){
//Modifier la hauteur de la boîte de dialogue en fonction de la taille du contenu
Dialog dialog = getDialog();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
//conversion dp → px
DisplayMetrics metrics = getResources().getDisplayMetrics();
lp.height = (int)(view.getContentHeight() * metrics.scaledDensity);
dialog.getWindow().setAttributes(lp);
}
});
binding.webview.loadUrl(url);
return binding.getRoot();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//Seule la largeur est fixée au départ
Dialog dialog = getDialog();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
DisplayMetrics metrics = getResources().getDisplayMetrics();
float scale = 0.9f;
lp.width = (int)(metrics.widthPixels * scale);
//Définissez la hauteur sur 0 et masquez la boîte de dialogue une fois
lp.height = 0;
dialog.getWindow().setAttributes(lp);
}
}
ʻOnCreateDialog ʻonCreateView
ne fonctionne pas même sidialog.getWindow (). SetAttributes (lp);
.
Doit être adressé en remplaçant ʻonActivityCreated`.
Vous pouvez obtenir la hauteur du contenu avec WebView.getContentHeight ()
, mais l'unité est dp.
Multipliez par DisplayMetrics.scaledDensity
pour convertir en px, puis définissez.
Recommended Posts