3 votes

Problème de changement d'orientation de la WebView

J'ai une mise en page ci-dessous où j'ai une mise en page linéaire avec la gravité comme centre pour que l'enfant soit aligné au centre.Je veux ajouter une webview par programme et charger la vidéo youtube dedans.Le problème est que la hauteur et la largeur de la webview est wrap_content,wrap_content.Donc en mode portrait la webview fonctionne bien et s'aligne au centre mais quand on change l'orientation en paysage la webview devient fill_parent et couvre l'écran horizontalement donc le contenu n'a pas l'air au centre. Voici le fichier de mise en page

et Voici le code de l'activité

L'image ci-dessous montre le résultat en mode portrait, ce qui est correct. La mise en page linéaire est en vert et la vue web est en bleu.

et lorsque vous faites pivoter l'appareil en mode paysage, la vue web en bleu s'étire pour occuper toute la largeur de l'écran.

enter image description here

Je veux que le webview soit placé au centre en mode paysage comme il l'est en mode portrait Merci de m'aider à comprendre et à trouver une solution

1voto

validcat Points 1371

Si vous chargez la vidéo dans le WebView, l'alignement dans le WebView est une tâche html. Enveloppez votre vidéo dans la balise <div> et ajoutez le style approprié (dans le fichier css ou en tant que style dans la balise) :

<div style="margin:0 auto;width:500px;">
    //your video object is placed here
</div>

Vous pouvez également lire une vidéo dans le VideoView, mais cette technique est un peu plus difficile. En bref, vous devez ajouter un FrameLayout au-dessus du WebView, obtenir les coordonnées où le VideoView doit être placé dans le fichier html et appliquer des LayoutParams avec des coordonnées pour le VideoView. Si l'orientation est modifiée, le VideoView doit être actualisé avec les nouvelles coordonnées. Si cela vous intéresse, je peux vous donner plus de détails.

1voto

APEXBoi Points 716

Il se peut que j'arrive trop tard. Mais ce que je fais.. :

AndroidManifest.xml

android:configChanges="orientation"

WebViewContainerActivity.java

@Override
public void onConfigurationChanged(Configuration newConfig) {
    /* WebView mainView is declared globally */
    ConstraintLayout lana = findViewById(R.id.main);
    lana.removeView(mainView);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int screenWidth = displaymetrics.widthPixels;
    int screenHeight = displaymetrics.heightPixels;
    lana.addView(mainView, 0,
            new ConstraintLayout.LayoutParams(
                    screenWidth,
                    screenHeight));
    super.onConfigurationChanged(newConfig);
}

Il fait son travail efficacement, et je dois l'utiliser parce que je ne comprends pas le HTML.

0voto

dcow Points 2921

Pourquoi pas wrap_content pour la largeur dans la mise en page paysage, puis définir l'option layout_gravity a "center" ?

0voto

Nithinlal Points 2257

Essayez ceci

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:gravity="center"  >
<LinearLayout
   android:id="@+id/webViewPlaceholder"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:background="#00AC0F"
   >
</LinearLayout>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X