【问题标题】:How to customize actionbar action item?如何自定义操作栏操作项?
【发布时间】:2015-02-12 02:30:19
【问题描述】:

预期:

但操作项以大写文本显示:

我尝试使用样式但没有成功。这里有一个版本:

    <!-- Base application theme. -->
    <style name="MyTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@android:color/white</item>
        <item name="colorPrimaryDark">@android:color/white</item>
        <item name="android:textAllCaps">false</item>
        <item name="android:capitalize">none</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:actionButtonStyle">@style/ActionButton</item>
        <item name="android:textAppearance">@style/Text</item>
        <item name="android:actionMenuTextAppearance">@style/ActionMenu</item>
        <item name="windowActionBar">false</item>

    </style>

    <style name="ActionButton" parent="Base.Widget.AppCompat.ActionButton">
        <item name="textAllCaps">false</item>
    </style>

    <style name="ActionMenu" parent="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu">
        <item name="textAllCaps">false</item>
    </style>

    <style name="Text" parent="TextAppearance.AppCompat">
        <item name="textAllCaps">false</item>
    </style>

</resources>

菜单:

<?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/action_item"
        android:title="action item"
        app:showAsAction="always" />
</menu>

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:background="@android:color/darker_gray"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        </android.support.v7.widget.Toolbar>

</LinearLayout>

谁真正知道应该改变什么属性才能得到想要的结果?

【问题讨论】:

  • Android 将那里的任何文本转换为大写字母,无法更改。但如果想要小写字母,则手动创建一个带有文本和与 ActionBar 相同背景颜色的图像。

标签: android android-actionbar


【解决方案1】:

你可以试试这个方法,为你的菜单标题做一个文本布局:

<?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/action_item"
    app:actionLayout="@layout/action_title"
    app:showAsAction="always" />
</menu>

布局action_title:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   >

   <TextView 
      android:id="@+id/action_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"     

      android:text="action item"
      android:textSize="10sp"  
      android:textColor="@color/black"  
    />
</LinearLayout>

现在action title 应该显示你给的东西

【讨论】:

  • 你能确认这行得通吗?这太奇怪了!我整天都在努力让 actionLayout 工作,但绝对不能在运行 Lollipop 的 Nexus5 上。菜单项只显示为文本,我绝对不能让它尊重布局!我将在 [希望] 几天内发布我的代码的简化版本。
  • 是的,我的应用程序使用这种方式,工作正常。希望看到你的代码
  • 我已经上传了一个新项目,在这里重现了我的问题:github.com/paulpv/ToolbarSwitch 我到底是什么间距导致 Switch 不显示?我知道我在成功使用工具栏之前已经这样做了。
  • PEBCAK!我通过将 android:actionLayout 更改为 app:actionLayout 来解决我的问题。 github.com/paulpv/ToolbarSwitch/commit/…
  • 你没从我的回答中看到吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多