46

ActionBarのMenuItemのタイトルをLowerCaseにしたいです。

私のmenu.xml

  <item android:id="@+id/register"
    android:title="Register"
    android:showAsAction="ifRoom|withText"/>

  <item android:id="@+id/unregister"
    android:title="Unregister"
    android:showAsAction="ifRoom|withText"/>

ActionBarには「REGISTER」と「UNREGISTER」が表示されますが、「登録」と「登録解除」と表示されるようにしたいです。

MenuItemで最初の文字を上、次の文字を下にすることはできますか? そして、どうすればそれを行うことができますか?

4

7 に答える 7

49

ネイティブ ActionBar 実装のソリューション:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyTheme" parent="android:Theme.Holo">
        <item name="android:actionMenuTextAppearance">@style/MyMenuTextAppearance</item>
    </style>
    <style name="MyMenuTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Menu">
        <item name="android:textAllCaps">false</item>
    </style>
</resources>

ActionBarSherlock を使用している場合、2 つの異なるアプローチがあります。

1) boolean リソースabs__config_actionMenuItemAllCapsを作成し、次のように設定しfalseます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="abs__config_actionMenuItemAllCaps">false</bool>
</resources>

2) または、overridenactionMenuTextAppearanceを使用してテーマを作成し、次のように使用しAndroidManifest.xmlます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyTheme" parent="Theme.Sherlock">
        <item name="actionMenuTextAppearance">@style/MyMenuTextAppearance</item>
        <item name="android:actionMenuTextAppearance">@style/MyMenuTextAppearance</item>
    </style>
    <style name="MyMenuTextAppearance" parent="TextAppearance.Sherlock.Widget.ActionBar.Menu">
        <item name="android:textAllCaps">false</item>
    </style>
</resources>

注意: ActionBarSherlock にはバグがあり、ICS より前のバージョンでは MenuItem が強制的に大文字になります ( https://github.com/JakeWharton/ActionBarSherlock/issues/969 )。パッチを提出しましたが、現時点ではマージされていません。今のところ、私のフォークを使用できます: https://github.com/alexander-mironov/ActionBarSherlock/tree/dev、私のコードがメインリポジトリにマージされたら、この回答を更新します。

更新:私の修正はメインの ActionBarSherlock リポジトリにマージされました。

于 2013-06-13T05:10:16.473 に答える
25

値の xml ファイルの 1 つに次を追加します。

<bool name="abc_config_actionMenuItemAllCaps">false</bool>
于 2015-10-11T16:50:16.990 に答える
24

答えを完成させるために、AppCompat を使用している場合、親スタイルは次のとおりです。

<style name="MyMenuTextAppearance" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
    <item name="android:textAllCaps">false</item>
</style>
于 2014-03-14T10:32:32.597 に答える
15

メニューテキストを「MENU ITEM」から「Menu Item」のように小文字にするのは私の解決策です。

res >> values >> styles.xml に以下を追加します。

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

AppTheme で呼び出すことができたら:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">...</item>
    <item name="colorPrimaryDark">...</item>
    <item name="colorAccent">...</item>
    <item name="actionMenuTextAppearance">@style/MenuItemTextAppearance</item>
</style>

これが役立つことを願っています。:)

于 2018-02-15T11:55:42.453 に答える
5

ここで他の答えをいくつか試しましたが、うまくいきませんでした(アクションバーのシャーロックは使用していません)。コメントで述べたように、新しいサポート ライブラリでは、上記の解決策は機能しないようです。この問題を解決するために、独自の actionLayout をメニュー項目に追加しました。

<item
    android:id="@+id/done"
    app:showAsAction="always"
    android:title="@string/yourTitle"/>

それから私のコードで私はこのようなことをしました。

final MenuItem done = menu.findItem(R.id.done);

done.setActionView(R.layout.menu_item_kingfisher_text_view);

TextView doneTextView = (TextView) done.getActionView();

次に、テキスト ビューで必要なことを行い、テキストがすべて大文字にならないようにします。これは間違いなく理想的ではありませんが、この問題の回避策が必要な場合は、これでうまくいきます。

于 2015-07-01T22:51:20.653 に答える