2017-09-24 14 views
0

Plus de malheurs Android Layout pour le débutant android. J'ai essayé d'apprendre la programmation Android, et pour la plupart, c'est facile (ish), la partie la plus difficile est la mise en page. J'ai maintenant une disposition d'onglets qui est la vue "maison", et sur cette vue j'ai besoin d'un bouton d'action flottant. Pour une raison quelconque, le bouton d'action flottante occupe toute la largeur de l'écran. Le bouton lui-même est la taille correcte, mais la disposition coupe le bas de l'écran. J'ai suivi quelques tutoriels et peu importe ce que je fais, il prend toujours toute la largeur en coupant le bas de mon écran. Capture d'écran jointe dans un émulateur d'Android Studio. La mise en page est ici ...FloatingActionButton prend la largeur de l'écran

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    tools:context="com.google.firebase.quickstart.auth.HomeActivity" 
    android:orientation="vertical"> 
    <!--<android.support.design.widget.AppBarLayout--> 
     <!--android:id="@+id/appbar"--> 
     <!--android:layout_width="match_parent"--> 
     <!--android:layout_height="wrap_content"--> 
     <!--android:paddingTop="8dp"--> 
     <!--android:theme="@style/AppTheme.AppBarOverlay">--> 
     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:minHeight="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 

     </android.support.v7.widget.Toolbar> 
    <!--</android.support.design.widget.AppBarLayout>--> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:background="@color/white" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:scaleType="center" 
     android:padding="8dp" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="8dp" 
     android:elevation="8dp" 
     android:tint="@color/white" 
     app:srcCompat="@drawable/ic_add"/> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primaryLightColor" /> 
</LinearLayout> 

Je remplis la vue avec des fragments et autres, mais je ne pense pas que ce soit le problème. Quelqu'un peut-il voir pourquoi le FloatingActionButton ne flotte pas, mais agit comme une mise en page linéaire complète? Merci beaucoup pour l'aide.

enter image description here

+0

juste essayer je ne suis pas sûr du résultat parfait mais s'il vous plaît faites le moi savoir si cela fonctionne ou pas. en vous flottantActionButton juste faire le ** scaleType en tant que centreCrop **, puis voir si cela fonctionne ou non –

+0

@AlokKumarVerma cela n'a pas fonctionné, montre toujours le bouton sur l'ensemble de l'écran. Merci bien –

Répondre

1

utilisation de coordonnées mise en page pour montrer le bouton d'action flottante:

Supprimer Bouton d'action flottante à partir de votre code XML et votre code XML devrait ressembler à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:context="info.androidhive.fab.MainActivity"> 


    <include layout="@layout/your_current_layout" /> // your current xml code layout 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 
+0

Est-ce que cela gâchera la mise en page que j'ai qui force les onglets au bas de l'écran? –

+0

Cela a fonctionné, mais maintenant le FAB couvre mes onglets au bas de l'écran. De plus, je ne veux que le fab sur l'onglet "home", pas sur les autres onglets. Cela change-t-il quelque chose? –

+0

Si vous souhaitez utiliser FAB dans un onglet "Accueil", placez le code XML dans l'activité de votre onglet "Accueil", et non dans l'activité parente. –

0

Vous avez besoin tu ajoutes le FAB seulement dans la disposition de la maison:

<android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@drawable/ic_add" 
     android:layout_gravity="bottom|end"/>