2016-01-20 63 views
7

我正在開發一個應用程序,其中我正在使用新的設計支持庫的導航視圖控制器的抽屜菜單。一切工作正常。我使用app:menu屬性爲導航視圖設置了項目。項目完美顯示。現在,我爲這些商品添加了app:actionLayout,並且它也被添加了,但問題是它正在顯示在視圖的右側。導航視圖項目的ActionLayout顯示在右側

我的動態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> 

我的菜單文件

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

我的動作佈局文件

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

回答

1

在你的動作佈局xml文件,可以解決您的問題添加到根視圖(在你的情況LinearLayout)以下屬性:

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

但需注意什麼文件說,大約actionLayout:

安卓actionLayout: 佈局資源。用作操作視圖的佈局。 https://developer.android.com/guide/topics/resources/menu-resource.html

而一個的actionView:

的動作的觀點是,內 應用欄提供豐富的功能的動作。例如,搜索操作視圖允許用戶在應用欄中鍵入 他們的搜索文本,而無需更改活動 或片段。 https://developer.android.com/training/appbar/action-views.html

所以也許這是不顯示在你的菜單項自定義視圖的最佳途徑。

看到你的代碼,爲什麼不把圖標和文本添加到item元素?

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

但是,如果你真的需要它,顯示自定義視圖的正確方法是使用ViewHolder模式實現ListView。

相關問題