如何在工具栏菜单中的图标下方显示文字?

时间:2016-03-24 11:35:11

标签: android toolbar android-custom-view

基本上我们使用带有图标的工具栏菜单,有时我们也一起使用图标/文字。图标和文本水平显示如下图所示

enter image description here

在正常情况下会发生这种情况,但我想像下面的图像一样垂直显示菜单图标/文字

enter image description here

我用这个xml完成​​了xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:orientation="horizontal"
    android:padding="@dimen/default_margin">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/bg_timeline"
        android:layout_weight="1"
        android:gravity="center"
        android:text="@string/label_timeline" />

        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/default_margin"
        android:drawableTop="@drawable/ic_about_large"
        android:layout_weight="1"
        android:gravity="center"
        android:text="@string/label_about" />

        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/ic_achivement_active"
        android:layout_marginLeft="@dimen/default_margin"
        android:layout_weight="1"
        android:gravity="center"
        android:text="@string/label_achievements" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/ic_more"
        android:background="?selectableItemBackground"
        android:gravity="center"
        android:layout_marginLeft="@dimen/default_margin"
        android:layout_weight="1"
        android:text="@string/label_more" />
</LinearLayout>

我的问题是,如果菜单项在每个图标的整体下面放置像Text,我该如何实现工具栏/操作栏。反正有吗?

1 个答案:

答案 0 :(得分:5)

您可以使用工具栏方法 inflateMenu 来扩充自定义菜单布局。下面是一个小片段:

  1. 在菜单文件夹中定义自定义菜单 your_menu
  2. <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/your_id"
            android:title="@string/your_string"
            android:icon="@drawable/your_menu_icon"
            app:actionLayout="@layout/your_custom_menu_layout"
            app:showAsAction = "always"
            />
    </menu>
    
    1. 现在定义 your_custom_menu_layout
    2. <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:gravity="center"
          android:orientation="vertical"
          android:paddingRight="10dp">
          <ImageView
              android:layout_width="30dp"
              android:layout_height="30dp"
              android:gravity="center"
              android:paddingLeft="5dp"
              android:paddingRight="5dp"
              android:src="@drawable/your_menu_icon" />
      
          <TextView
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:gravity="center"
              android:paddingLeft="0dp"
              android:text="your_text"
              android:textColor="@color/white"
              android:textSize="9dp" />
      </LinearLayout>
      
      1. 第三,使用工具栏在您的java代码中膨胀您的菜单项:
      2.   

        your_toolbar.inflateMenu(R.menu.your_menu);

        1. 引用并单击侦听器:
        2.   

          菜单menu = your_toolbar.getMenu();

               

          查看your_menu_view = menu.findItem(R.id.your_id).getActionView();           your_menu_view.setOnClickListener(new View.OnClickListener(){            @覆盖            public void onClick(查看v){             }});