2016-01-20 18 views
7

Sto sviluppando un'applicazione in cui sto utilizzando il nuovo controller di visualizzazione di navigazione della libreria di supporto per il menu dei cassetti. Tutto funziona bene. Ho impostato gli elementi per la visualizzazione di navigazione utilizzando l'attributo app:menu. Gli oggetti sono perfettamente visualizzati. Ora sto aggiungendo app:actionLayout per quelle di questo articolo e viene anche aggiunto, ma il problema è che viene visualizzato sul lato destro nella vista.ActionLayout per gli elementi di navigazione visualizza sul lato destro

La mia attività XML

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     app:popupTheme="@style/AppTheme.PopupOverlay"> 

     <afour.com.uniapp.customwidgets.CustomTextView 
      android:id="@+id/text_toolbarTitle" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:gravity="start" 
      android:text="@string/app_name" 
      android:textColor="@android:color/white" 
      android:textSize="20sp" 
      app:FontName="@string/type_face_splash" /> 
    </android.support.v7.widget.Toolbar> 


    <FrameLayout 
     android:id="@+id/frame_content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@id/toolbar" /> 

     </RelativeLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@android:color/holo_green_dark" 
    android:paddingTop="20dp" 
    app:headerLayout="@layout/navigation_header_layout" 
    app:paddingStart="0dp" 
    app:itemBackground="@android:color/holo_green_light" 
    app:itemTextColor="@android:color/white" 
    app:menu="@menu/main_menu" /> 

</android.support.v4.widget.DrawerLayout> 

mio file di menu

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:id="@+id/nav_about" 
    android:title="@string/aboutus" 
    app:showAsAction="never" /> 

<item 
    android:id="@+id/nav_logout" 
    app:actionLayout="@layout/logout_item_layout" 
    app:showAsAction="collapseActionView" /> 

</menu> 

mio file di layout azione

<?xml version="1.0" encoding="utf-8"?> 

<ImageButton 
    android:layout_width="60dp" 
    android:layout_height="60dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginStart="10dp" 
    android:background="@android:color/transparent" 
    android:contentDescription="@string/aboutus" 
    android:padding="05dp" 
    android:src="@android:drawable/ic_menu_help" /> 

<afour.com.uniapp.customwidgets.CustomTextView 
    android:id="@+id/text_logout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="20dp" 
    android:layout_marginStart="20dp" 
    android:gravity="start" 
    android:text="@string/logout" 
    android:textColor="@android:color/white" 
    android:textSize="20sp" 
    app:FontName="@string/type_face_regular" /> 

</LinearLayout> 

PFA della questione See the action layout displayed in red in right corner

risposta

1

Nel file di layout XML delle azioni, è possibile risolvere il problema aggiungendo alla visualizzazione radice (un LinearLayout nel tuo caso) le seguenti proprietà:

<LinearLayout 
    ... 
    android:layout_gravity="start"> 

Ma prendere atto ciò che dice la documentazione relativa actionLayout:

Android: actionLayout: risorsa Layout. Un layout da utilizzare come vista dell'azione. https://developer.android.com/guide/topics/resources/menu-resource.html

E un ActionView:

Un punto di vista dell'azione è un'azione che fornisce ricche funzionalità all'interno la barra app. Ad esempio, una vista delle azioni di ricerca consente all'utente di digitare il testo di ricerca nella barra delle applicazioni, senza dover modificare le attività o frammenti. https://developer.android.com/training/appbar/action-views.html

Quindi forse questo non è il modo migliore per visualizzare una visualizzazione personalizzata nella tua MenuItem.

Vedendo il codice, perché non aggiungere l'icona e il testo all'elemento elemento?

<item 
    android:id="@+id/nav_logout" 
    android:icon="@android:drawable/ic_menu_help" 
    android:text="@string/logout" /> 

Ma se si ha realmente bisogno, il modo giusto per visualizzare la visualizzazione personalizzata sta attuando un ListView con il modello ViewHolder.

Problemi correlati