【问题标题】:Toolbar menu item text size changing工具栏菜单项文本大小更改
【发布时间】:2016-07-13 14:03:08
【问题描述】:

下面的代码正在更改工具栏内的一般标题大小,但我需要更改菜单项文本大小。我尝试了很多问题的答案,但它不会直接影响菜单项的大小。我想更改 item app:showAsAction="ifRoom" 的时间。你有想法吗?

菜单项 (我需要改变这个大小)

    android:id="@+id/try"
    app:showAsAction="ifRoom"
    android:title="0"
    />

样式 Xml

<style name="ActionBar.nameText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textSize">50sp</item>
        <item name="android:textStyle">bold</item>
    </style>

工具栏

android.support.v7.widget.Toolbar

        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
android:titleTextAppearance="@style/ActionBar.nameText"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

        />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:id="@+id/header">


        <Button
            android:id="@+id/level_text"
            android:background="@drawable/levelstar"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:text="15"
            android:textSize="15sp"
            android:layout_centerHorizontal="true"/>

        />

    </RelativeLayout>

图片

【问题讨论】:

  • 谢谢基本但我之前尝试过但只是标题大小在工具栏内发生变化我需要更改菜单项文本大小它不会影响菜单项大小..

标签: android xml android-toolbar


【解决方案1】:

您有两种方法可以做到这一点,具体取决于您希望所有内容的外观/功能。

选项 1:

为整个弹出菜单创建自定义样式。 唯一的缺点是它会改变所有菜单项,而不仅仅是一个。

在 Styles.xml 中创建样式

<style name="MyMenu">
    <item name="android:textSize">17sp</item> //size desired.
    <item name="android:textColor">@color/colorAccent</item> //font color
    <item name="android:background">#FFFFFF</item> //background
</style>

然后将此样式应用到您的工具栏:

<android.support.v7.widget.Toolbar
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="?attr/actionBarSize"
  android:background="?attr/colorPrimary"
  app:popupTheme="@style/MyMenu" //Important line
/>

结果变成:

选项编号 2

您可以通过编程方式将单个菜单项设置为具有自定义字体和样式。为此,您只需要知道要操作的任何菜单项的索引。

在您的 onCreateOptionsMenu 中,您需要添加如下内容:

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    MenuItem item = menu.getItem(0); //here we are getting our menu item.
    SpannableString s = new SpannableString(item.getTitle()); //get text from our menu item.
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0); //here I am just setting a custom color to the menu item. leave this out if you want it left at black.
    s.setSpan(new RelativeSizeSpan(.7f),0,s.length(),0); //here is where we are actually setting the size with a float (proportion).
    item.setTitle(s); //Then just set the menu item to our SpannableString.

    return true;
}

现在看起来像这样:

【讨论】:

  • 感谢基本的解释。我试过了,是的,但如果我使用 app:showAsAction="never" 。但是我尝试使用 app:showAsAction="ifRoom" 。当我尝试使用它时,它至少无法正常工作,因为当我尝试吐司时它正在工作。
  • 如果你使用 ifRoom,你能添加一个屏幕截图吗?
  • 您可能需要让您的主题继承自一个合适的父主题。例如:&lt;style name="MyMenu" parent="ThemeOverlay.AppCompat.Light"&gt;。否则会丢失一些默认行为,例如带有波纹效果的菜单突出显示 onClick。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多