5

Próbuję dodać akcję akcji do mojego paska narzędzi. Toolbar ma być pomarańczowy (lub przezroczysty jak w tym przypadku) z białego tekstu i ikon, więc używam ten pogląd jako Toolbar:Pasek narzędzi Motyw ShareActionProvider jest zawsze ciemny

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:minHeight="?attr/actionBarSize" 
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
    tools:ignore="UnusedAttribute" /> 

Ponadto, jest to jak moja deklaracja motyw aplikacja wygląda tak:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

Nieważne jak zmienić styl to jest to, co mam:

enter image description here

Jak przekonać ShareActionProvider, aby uzyskać motyw Light?

+0

myślę pomoc dla ciebie http://stackoverflow.com/questions/28591447/style-appcompat-v7- toolbar-menu-background – mustafasevgi

+1

To nie działa –

+0

Możesz wypróbować app: theme = "@ style/ThemeOverlay.AppCompat.Light", ale spowoduje to przyciemnienie ikony strzałki w górę i menu. – Harry

Odpowiedz

3

moje rozwiązanie jest oparte na v7 biblioteki wsparcie, pasek narzędzi, ActionBarActivity, Android Studio

1- usunąć app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

2- upewnić się, że baza tematem jest Theme.AppCompat.Light.NoActionBar

3- przejść do oryginalnego kodu ShareActionProvider wpisując "ShareActionProvider" w dowolnym miejscu kodu, a następnie zaimportuj plik v7, a następnie skieruj na niego myszkę (ctrl + lewy klawisz myszy)

4- skopiuj kod w nim d wkleić go w nowym pliku java w ty Katalog projektu

5- przejść do własnego ShareActionProvider i usunąć ten import, jeśli masz go import android.support.v7.appcompat.R

6- dostarczyć własną ikonę zakładowego ponieważ domyślny jeden jest czarny Drawable myDrawable = mContext.getResources().getDrawable(R.drawable.ic_share); activityChooserView.setExpandActivityOverflowButtonDrawable(myDrawable);

7- przejdź do aktywności i usuń import utworzonego w kroku 3 (by użyć własnego pliku)

8- udać się do onCreateOptionsMenu powinno być tak:

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.menu_main, menu); 

    MenuItem item = menu.findItem(R.id.menu_item_share); 

    mShareActionProvider = new ShareActionProvider(MainActivity.this); 
    MenuItemCompat.setActionProvider(item , mShareActionProvider); 

    Intent shareIntent = new Intent(); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, "Hello World"); 
    shareIntent.setType("text/plain"); 
    mShareActionProvider.setShareIntent(shareIntent); 

    return true; 
} 

9- ostatni etap to nie zapomnij, aby edytować menu.xml

app:actionProviderClass= 
      "com.yourPackageName.ShareActionProvider" /> 
+0

To nie działa. klasa jest zależna od innych klas w Androidzie, które nie są publiczne –

1

to co zrobiłem i zadziałało. Chciałem białym tle w ShareActionProvider z nim tekst jest czarny

<android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:theme="@style/MainTheme" 
      app:layout_collapseMode="pin"/> 

Mój motyw

<style name="MainTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/md_white_1000</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:textColorPrimary">#ffffff</item> 
    <item name="android:textColorSecondary">#ffffff</item> 
    <item name="android:textColor">@color/md_black_1000</item> 
    <item name="listPopupWindowStyle">@style/PopupListStyle</item> 
</style> 

<style name="PopupListStyle" parent="@style/Widget.AppCompat.Light.ListPopupWindow"> 
    <item name="android:popupBackground">#ffffff</item> 
</style> 
Powiązane problemy