2016-04-21 12 views
1

私はPopupMenuスタイリングに苦労していました。多くの研究の後で、私のテーマにカスタムPopupMenuスタイルを作成するプロセスはかなり正直なようでした。例えば、this questionの答えは、PopupMenuの背景色を変更する簡単な方法のようです。しかし、私のプロジェクトではこれらの解決策のどれも働いていません。だから私は自分のプロジェクトでPopupMenuをスタイルするために実際に継承するべきものを見つけるためにスタイルソースを掘り下げ始めました。カスタムPopupMenuスタイルは無視されています

私は、API 19を実行している携帯電話に私のテストを実行している、と私の基本テーマは次のようになります。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- ... --> 
    <item name="android:popupMenuStyle">@style/CustomPopupMenu</item> 
</style> 

<style name="CustomPopupMenu" parent="@style/Widget.AppCompat.Light.PopupMenu"> 
    <item name="android:popupBackground">@color/retina_burning_hot_pink</item> 
</style> 

これは、ここで受け入れ答えのほとんどが示す解決策です。しかし、これは私のPopupMenuをスタイルしません。だから私は、私のテーマの遺伝子を見つけ出し、どのデフォルト設定が使われているかを知るために、ソースを掘り下げました。これは私が見つけたものです:

<style name="Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light.DarkActionBar"/> 
<style name="Base.Theme.AppCompat.Light.DarkActionBar" parent="Base.Theme.AppCompat.Light"> 
<style name="Base.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light"/> 

そしてBase.V7.Theme.AppCompat.Lightに私が見つけたこれらのデフォルト設定:

<!-- Popup Menu styles --> 
<item name="popupMenuStyle">@style/Widget.AppCompat.Light.PopupMenu</item> 
<item name="textAppearanceLargePopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large</item> 
<item name="textAppearanceSmallPopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small</item> 
<item name="listPopupWindowStyle">@style/Widget.AppCompat.ListPopupWindow</item> 
<item name="dropDownListViewStyle">?android:attr/dropDownListViewStyle</item> 
だから、私の知る限り、私のテーマは、デフォルトのPopupMenuのスタイルを使用しています Theme.AppCompat.Light.DarkActionBarから継承

@style/Widget.AppCompat.Light.PopupMenu。私はその後、自分のPopupMenu設定を設定するためにそのスタイルを継承します。自分のアクティビティとアプリケーションがすべて正しいテーマを使用していることを確認しました。私はなぜこれがうまく動作しないのか分からない。私はまた、これらの設定を試してみた:

<item name="android:textAppearanceLargePopupMenu">@style/CustomPopupMenuLarge</item> 
<item name="android:textAppearanceSmallPopupMenu">@style/CustomPopupMenuSmall</item> 
<item name="android:popupWindowStyle">@style/CustomPopupMenuListWindow</item> 

私は一つ一つのカスタムスタイルを提供し、それらのどれも働きました。すべてのカスタムスタイルをオーバーライドできますか?私が困惑しているので、どんな助けもありがたいです。


EDITS

ここにここに私のマニフェストだ...

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.blah.blah"> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".Activities.MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

AppTheme.NoActionBar

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
+0

あなたがマニフェストにテーマを設定していますか? – Sree

+0

@Sree - はい、質問に記載されています。 – NoChinDeluxe

+0

コードを見ることができますか(おそらく正しいと思っていますが、確かめてください) – Sree

答えて

0

である私は、あなたがAppCompat.NoActionBarの親を定義する必要があると思います。 parent="Theme.AppCompat.Light.NoActionBar"を試し、<item name="android:popupMenuStyle">@style/CustomPopupMenu</item>を追加してください。

+0

私はすでにこれを試してみましたが、違いはありませんでした。私は 'AppTheme'を親にしようとしましたが、今はあなたの提案を試してみると、いくつかの色が変わりますが、PopupMenuは変更されません。 – NoChinDeluxe

+0

うーん..それはうまくいくはずです。 – Sree

+0

私は提案した方法で変更しました。本文に「