0
votes

Android Studio - L'élément est caché derrière Smartphone

J'ai ajouté un bouton à mon webview, mais le bouton est partiellement caché derrière le smartphone.

Je dessine un rectangle rouge dans la capture d'écran suivante, c'est la taille réelle de l'écran, pourquoi la zone webview est-elle plus grande que la taille d'affichage ?? Je dois déplacer le bouton de manière plus élevée afin que ce ne soit pas hors de l'affichage. P>

 Entrez la description de l'image ici p>

dans xcode (iOS) il y a "zone sûre" qui est une zone visible de l'écran sans barre d'état et bar inférieure, y a-t-il quelque chose de similaire dans le studio Android? p>

Comment puis-je résoudre ce problème? P>

Je suis en cours d'exécution Android Studio 3.4.2 P>

Activity_fullcreen.xml strong> P>

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/relativeLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="visible"
    tools:context="de.blizz_z.onlineshop.FullscreenActivity">

    <Button
        android:id="@+id/backButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginLeft="32dp"
        android:layout_marginBottom="20dp"
        android:text="Zurück"
        app:layout_constraintBottom_toBottomOf="@+id/blizzView"
        app:layout_constraintStart_toStartOf="@+id/blizzView" />

    <WebView
        android:id="@+id/blizzView"
        android:layout_width="412dp"
        android:layout_height="844dp"
        android:keepScreenOn="true"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </WebView>


3 commentaires

S'il vous plaît montrer votre code XML


La raison n'est pas que tous les appareils Android ont la hauteur = 844DP. Dans ce cas, il ressemble à votre téléphone de hauteur inférieure à cette valeur


Il est censé travailler avec tous les téléphones Android


4 Réponses :


0
votes

Peut être la taille de l'écran du projet est différente de la résolution de votre téléphone

Essayez de déclarer une nouvelle dimension de la mise en page pour la visionneuse WebView ou vous pouvez définir la visibilité du bouton sur Aucun lors de l'ouverture de la WEBVIEW P>

btn.setVisibility(View.GONE); 


1 commentaires

La mise en page doit toujours adapter l'affichage de tout appareil Android.



0
votes

Si vous souhaitez effectuer votre bouton sur votre webview, utilisez Framelayout comme parent, puis faites quelque chose comme ceci: XXX


4 commentaires

J'ai déjà essayé Framelayout, mais je n'ai pas pu déplacer la position du bouton. Stackoverflow.com / Questions / 57108594 / ...


Vous pouvez modifier sa position en utilisant Android: Layout_gravity = "Droite" (dans cet exemple, le bouton ira à la droite de l'écran)


Et si j'ai besoin du bouton pour être sur une position personnalisée?


Eh bien, vous pouvez utiliser un autre parent pour le bouton (linearlayout, relativelayout, contraintlayout, etc.) Cela dépend vraiment de l'endroit où vous souhaitez placer le bouton. Ce qui est important, c'est d'être capable d'obtenir cet effet flottant que le WebView a besoin d'être le premier enfant de Framelayout. J'espère que ça t'as aidé!



2
votes

Vous avez défini la taille du webview sur une quantité arbitraire, ce qui le rend probablement dépassant l'écran de votre appareil. Les contraintes BOUTON sont définies correctement, mais car le bas du webview est éteint l'écran, c'est le bouton.
Essayez de changer xxx

à xxx

ceci correspondra au webview sur tout l'écran de chaque appareil et contraignez la touche dans le coin inférieur gauche du webview .


0 commentaires

0
votes

Vous définissez votre Webview code> pour être une hauteur et une largeur spécifiques, ce qui est une mauvaise pratique si vous souhaitez prendre en charge plusieurs périphériques. Dans votre XML:

<Button
    android:id="@+id/backButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="32dp"
    android:layout_marginLeft="32dp"
    android:layout_marginBottom="20dp"
    android:text="Zurück"
    app:layout_constraintBottom_toBottomOf="parent" <!-- Constrain to parent, not WebView -->
    app:layout_constraintStart_toStartOf="parent"   <!-- Constrain to parent, not WebView --> />

<WebView
    android:id="@+id/blizzView"
    android:layout_width="match_parent"   <!-- Change from fixed dimension to "match_parent" -->
    android:layout_height="match_parent"  <!-- Change from fixed dimension to "match_parent" -->
    android:keepScreenOn="true"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</WebView>


0 commentaires