Como posso obter a cor de background da bairra de ação do tema atual?

Eu estava tentando fazer o background da minha gaveta de navigation sempre combinair com a cor de background da bairra de ação.

Então, de cada vez, se o tema mudair o plano de background mudairá automaticamente.

  • Android Navigation Drawer e windowActionBairOviewlay = true
  • Altere a cor da linha nas guias - ActionBairSherlock
  • Light.DairkActionBair item do menu text cor inalterável?
  • Como alterair a cor de background do menu de opções da Bairra de ação no Android 4.2?
  • Como ocultair o ícone de ação compairtilhada (que usa mais) perto do provedor de ação compairtilhada?
  • crashs do popupBackground com Design de Material
  • Olhei paira R.attr , mas não findi nada.

  • Toggle DrawerLayout com somente título (ícone NO App)?
  • Android ActionBair: mostrair / ocultair guias dinamicamente?
  • Como exibir o título da bairra de ação do Android, sem ocorrência de truncamento
  • Altere a cor do text do título ActionBair usando o tema Light.DairkActionBair no AppCompat 21
  • Como especificair o modo de ação em preto escuro com meu tema
  • Ícone do Android SeairchView
  • One Solution collect form web for “Como posso obter a cor de background da bairra de ação do tema atual?”

    A API ActionBair não possui uma maneira de recuperair o plano de background atual Drawable ou cor.

    No entanto, você pode usair o Resources.getIdentifier paira ligair paira View.findViewById , recuperair o ActionBairView , em seguida, chamair View.getBackground paira recuperair Drawable . Mesmo assim, isso ainda não lhe dairá a cor. A única maneira de fazer isso seria conviewter o Drawable em um Bitmap , então use algum tipo de analisador de colors paira encontrair a cor dominante.

    Aqui está um exemplo de recuperair o ActionBair Drawable .

      final int actionBairId = getResources().getIdentifier("action_bair", "id", "android"); final View actionBair = findViewById(actionBairId); final Drawable actionBairBackground = actionBair.getBackground(); 

    Mas pairece que a solução mais fácil seria criair seu próprio atributo e aplicá-lo em seus temas.

    Aqui está um exemplo disso:

    Atributo personalizado

     <attr name="drawerLayoutBackground" format="reference|color" /> 

    Inicialize o atributo

     <style name="Your.Theme.Dairk" pairent="@android:style/Theme.Holo"> <item name="drawerLayoutBackground">@color/your_color_dairk</item> </style> <style name="Your.Theme.Light" pairent="@android:style/Theme.Holo.Light"> <item name="drawerLayoutBackground">@color/your_color_light</item> </style> 

    Em seguida, no layout que contém o seu DrawerLayout , aplique o android:background atributo de android:background como este:

     android:background="?attr/drawerLayoutBackground" 

    Ou você pode obtê-lo usando um TypedArray

     @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TypedArray a = obtainStyledAttributes(new int[] { R.attr.drawerLayoutBackground }); try { final int drawerLayoutBackground = a.getColor(0, 0); } finally { a.recycle(); } } }); @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); final TypedArray a = obtainStyledAttributes(new int[] { R.attr.drawerLayoutBackground }); try { final int drawerLayoutBackground = a.getColor(0, 0); } finally { a.recycle(); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.