Amr*_*rut 8 xml android menuitem android-layout navigation-drawer
我正在开发一个应用程序,我正在使用新设计支持库的导航视图控制器进行抽屉菜单.一切都很好.我已使用app:menu属性设置导航视图的项目.物品完美展示.现在我正在添加app:actionLayout这些项目,它也会被添加,但问题是它会在视图的右侧显示.
我的活动XML
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
我的菜单文件
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
我的动作布局文件
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
在操作布局 xml 文件中,您可以通过向根视图(在您的情况下为 LinearLayout)添加以下属性来解决问题:
<LinearLayout
...
android:layout_gravity="start">
Run Code Online (Sandbox Code Playgroud)
但请注意文档中有关 actionLayout 的说明:
android:actionLayout:布局资源。用作操作视图的布局。 https://developer.android.com/guide/topics/resources/menu-resource.html
和一个动作视图:
操作视图是在应用栏中提供丰富功能的操作。例如,搜索操作视图允许用户在应用栏中键入搜索文本,而无需更改活动或片段。 https://developer.android.com/training/appbar/action-views.html
所以也许这不是在 MenuItem 中显示自定义视图的最佳方式。
看到您的代码,为什么不直接将图标和文本添加到 item 元素中呢?
<item
android:id="@+id/nav_logout"
android:icon="@android:drawable/ic_menu_help"
android:text="@string/logout" />
Run Code Online (Sandbox Code Playgroud)
但如果您确实需要它,显示自定义视图的正确方法是使用 ViewHolder 模式实现 ListView。
| 归档时间: |
|
| 查看次数: |
1164 次 |
| 最近记录: |