・ Zeigen Sie Inhalte im Web in einem Dialogfeld an -Dialogbreite beträgt 90% der Bildschirmbreite ・ Die Dialoghöhe kann je nach Inhaltsgröße geändert werden
WebViewDialogFragment.java
public class WebViewDialogFragment extends DialogFragment {
//Lass irrelevante Dinge weg
@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){
//Ändern Sie die Dialoghöhe abhängig von der Inhaltsgröße
Dialog dialog = getDialog();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
//dp → px Konvertierung
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);
//Nur die Breite ist am Anfang festgelegt
Dialog dialog = getDialog();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
DisplayMetrics metrics = getResources().getDisplayMetrics();
float scale = 0.9f;
lp.width = (int)(metrics.widthPixels * scale);
//Setzen Sie die Höhe auf 0 und blenden Sie den Dialog einmal aus
lp.height = 0;
dialog.getWindow().setAttributes(lp);
}
}
onCreateDialog`` onCreateView
funktioniert nicht mitdialog.getWindow (). SetAttributes (lp);
.
Es muss durch Überschreiben von "onActivityCreated" behoben werden.
Sie können die Höhe des Inhalts mit "WebView.getContentHeight ()" ermitteln, aber die Einheit ist dp. Multiplizieren Sie mit "DisplayMetrics.scaledDensity", um in px zu konvertieren, und setzen Sie dann.
Recommended Posts