2015-09-08 25 views
11

Ho la seguente visualizzazione elenco a cui voglio aggiungere un pulsante di azione mobile.Come integrare un pulsante di azione mobile nel layout lineare con la barra degli strumenti

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background_serious" > 
    <include layout="@layout/toolbar"/> 

    <ListView android:id="@id/android:list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:cacheColorHint="#00000000"> 
    </ListView> 

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

</LinearLayout> 

Nella forma corrente il pulsante non viene visualizzato affatto. Ho provato a cambiare LinearLayout a CoordinatorLayout come molti esempi lo caratterizzano. Ma poi ho un errore:

java.lang.RuntimeException: Unable to start activity ComponentInfo{de.sudoq/de.sudoq.controller.menus.SudokuLoadingActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class CoordinatorLayout 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) 
      ... 
    Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class CoordinatorLayout 
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:757) 
      ... 
    Caused by: java.lang.ClassNotFoundException: Didn't find class "android.view.CoordinatorLayout" on path: DexPathList[[zip file "/data/app/de.sudoq-2/base.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]] 
      ... 

Ho anche Trid FrameLayout ma poi l'elenco potrebbe continuare sulla barra degli strumenti (è possibile vedere la barra degli strumenti sotto le parti trasparenti di voci di elenco, ma coprire la barra degli strumenti, non il contrario)

risposta

20

Prova a mettere ListView e FloatingActionButton all'interno FrameLayout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background_serious" > 

<include layout="@layout/toolbar"/> 

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<ListView android:id="@id/android:list" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:cacheColorHint="#00000000"> 
</ListView> 

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

È signore sono una manna dal cielo. Grazie per la soluzione semplice! – TJMonk15

5

è necessario utilizzare android.support.design.widget.CoordinatorLayout come il layout root invece di LinearLayout allora solo android.support.design.widget.FloatingActionButton funzionerà

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background_serious" > 

// your code 

</android.support.design.widget.CoordinatorLayout> 
1

questo ha funzionato per me:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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" 
android:fitsSystemWindows="true" 
tools:context=".HomeFeedActivity"> 
<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="@drawable/ic_action_add" /> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:fitsSystemWindows="true" 
    tools:context=".HomeFeedActivity"> 

    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:divider="@null" /> 

</LinearLayout> 

+0

Grazie per il puntatore qui - mi ha fatto andare nella giusta direzione. Tuttavia, nel mio caso, mettere il 'FloatingActionButton' prima ha causato che fosse nascosto dalle viste che erano elencate in seguito nell'xml. Lo spostamento di essere l'ultimo elemento in "CoordinatorLayout" ha risolto questo. – gnB

Problemi correlati