2016-01-20 5 views
7

Ich entwickle eine Anwendung, in der ich die Navigation View Controller der neuen Design-Support-Bibliothek für Schublade Menü verwenden. Alles funktioniert gut. Ich habe Elemente für die Navigationsansicht mit dem Attribut app:menu festgelegt. Artikel werden perfekt angezeigt. Jetzt füge ich app:actionLayout für diese Artikel hinzu und es wird auch hinzugefügt, aber das Problem ist, dass es auf der rechten Seite in der Ansicht angezeigt wird.ActionLayout für navigationview Artikel angezeigt auf der rechten Seite

My Activity 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> 

Mein Menü Datei

<?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> 

meine Aktion Layout-Datei

<?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 der Ausgabe See the action layout displayed in red in right corner

Antwort

1

In Ihrer Aktion Layout XML-Datei, können Sie Ihr Problem zur Ergänzung der Stammansicht beheben (ein LinearLayout in Ihrem Fall) die folgenden Eigenschaften:

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

aber zur Kenntnis nehmen, was die Dokumentation sagt über actionLayout:

android: actionLayout: Layout-Ressource. Ein Layout, das als Aktionsansicht verwendet werden soll. https://developer.android.com/guide/topics/resources/menu-resource.html

Und ein actionView:

Eine Aktion Ansicht ist eine Aktion, die innerhalb der App-Leiste umfassende Funktionalität zur Verfügung stellt. Zum Beispiel ermöglicht eine Suchaktionsansicht dem Benutzer, ihren Suchtext in der App-Leiste einzugeben, ohne Aktivitäten oder Fragmente zu ändern. https://developer.android.com/training/appbar/action-views.html

Also vielleicht ist das nicht der beste Weg, um eine benutzerdefinierte Ansicht in Ihrem MenuItem angezeigt werden soll.

Wenn Sie Ihren Code sehen, fügen Sie einfach das Symbol und den Text zum Elementelement hinzu.

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

Aber wenn Sie es wirklich brauchen, ist der richtige Weg die benutzerdefinierte Ansicht führt ein Listview mit ViewHolder Muster angezeigt werden soll.

Verwandte Themen