15

Androidでアクションバーアイテムの「onPressed」の色を変更する方法がわかりません。アクションバーの背景色についてではなく、青色のオーバー状態について話しています。これの色を変更するにはどうすればよいですか、少なくともそれを取り除くにはどうすればよいですか? たとえば、homeAsUpIndicator を持つアプリ アイコン。

アクション バーのスタイルとメニュー項目のスタイルを変更しようとしましたが、何も機能しませんでした。

ありがとう

編集 これまでの私の実装は次のとおりです。

私のスタイルxml:

<style name="Theme.AppTheme" parent="@android:style/Theme.Holo">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:selectableItemBackground">@android:color/transparent</item>
    <item name="android:windowEnterAnimation">@anim/fadein</item>
    <item name="android:windowExitAnimation">@anim/fadeout</item>        
    <item name="android:actionBarItemBackground">@android:color/transparent</item>
</style>

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/actionbarheader</item>
    <item name="android:backgroundStacked">@drawable/actionbarheader</item>
    <item name="android:backgroundSplit">@drawable/actionbarheader</item>
    <item name="android:titleTextStyle">@style/ActionBarTitle</item>
    <item name="android:actionBarItemBackground">@android:color/transparent</item>
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
    <item name="android:homeAsUpIndicator">@drawable/actionbarlogo</item>
    <item name="android:icon">@drawable/app_icon</item>>
</style>

<style name="ActionBarTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textSize">20sp</item>
</style>

<style name="MyActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:background">@android:color/transparent</item>
</style>

次に、actionbarogo のドローアブルがあります。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/actionbarlogo_on" android:state_pressed="true"/>
  <item android:drawable="@drawable/actionbarlogo_on" android:state_focused="true"/>
  <item android:drawable="@drawable/actionbarlogo_off"/>
</selector>

アクションバー項目の私のメニュー xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/ContactsMode"
        android:icon="@drawable/actionbarcontacts"
        android:title="@string/contacts"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:background="@android:color/transparent" />
</menu>

最後に、アイテムのドローアブル:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/actionbarcontacts_on" android:state_pressed="true"/>
  <item android:drawable="@drawable/actionbarcontacts_on" android:state_focused="true"/>
  <item android:drawable="@drawable/actionbarcontacts_off"/>
</selector>

ActionBar のメニュー項目を作成する方法は次のとおりです。

public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        actionBar.setIcon(R.drawable.actionbarlogo);
        return true;
    }

    public boolean onPrepareOptionsMenu(Menu menu) {        
         MenuItem item= menu.findItem(R.id.ContactsMode);
         if(ContactsButton)
             item.setVisible(true);      
         else
            item.setVisible(false);

         return true;   
    }
4

2 に答える 2

38

アプリ アイコンの背景を homeAsUpIndicator と一緒に設定するには (これら 2 つのアイコンには共通の背景があります) android:actionBarItemBackground、テーマに項目を設定する必要があります。テーマには次のようなものが含まれている必要があります ( ActionBarSherlockを使用していると仮定します):

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <!-- for ActionBarSherlock -->
    <item name="actionBarItemBackground">@drawable/my_background</item>
    <!-- for native ActionBar -->
    <item name="android:actionBarItemBackground">@drawable/my_background</item>
</style>

drawabledrawable/my_background.xmlStaleListDrawableで、次のようなものが含まれます。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_pressed="true"
        android:drawable="@drawable/my_background_pressed" />
    <item
        android:drawable="@drawable/my_background_normal" />
</selector>

背景を完全に無効にするには、透明な背景を設定するか@null、テーマの値も機能する可能性があります。

テーマ アイテムandroid:actionBarItemBackgroundは、アプリ アイコンと homeAsUpIndicator の背景を設定します。ただし、メニュー項目のデフォルトの背景、オーバーフロー アイコン、タイトルの背景も設定します。これらの背景はオーバーライドできます。

メニュー項目

メニュー項目の背景を変更する(android:)actionButtonStyleには、次のようにテーマで適切に設定します。

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionButtonStyle">@style/MyActionButtonStyle</item>
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
</style>

そしてMyActionButtonStyle、次のようなものが含まれます:

<style name="MyActionButtonStyle" parent="@style/Widget.Sherlock.ActionButton">
    <item name="android:background">@drawable/my_background</item>
</style>

オーバーフロー アイコン

最後に、オーバーフロー アイコンの背景を変更するにはandroid:actionOverflowButtonStyle、次のようにテーマに適切に設定します。

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyOverflowButtonStyle</item>
</style>

そしてMyOverflowButtonStyle、次のようなものが含まれます:

<style name="MyOverflowButtonStyle" parent="@style/Widget.Sherlock.ActionButton.Overflow">
    <item name="android:background">@drawable/my_background</item>
</style>
于 2012-12-12T20:20:22.067 に答える
2

修正しました。onCreateメソッドのテーマを変更する親アクティビティがありました...

アクティビティ内でプログラムでテーマを設定できることを知りませんでした。

setTheme(R.style.MyTheme);
于 2012-12-20T09:44:20.893 に答える