5

Sto tentando di aggiungere un'azione di condivisione alla barra degli strumenti. Barra degli strumenti dovrebbe essere arancione (o trasparente come in questo caso) con testo bianco e le icone, in modo da sto usando questo punto di vista come Toolbar:Barra degli strumenti Il tema ShareActionProvider è sempre scuro

<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" /> 

Inoltre, questo è come la mia dichiarazione app tema assomiglia:

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

Non importa quanto a cambiare lo stile di questo è ciò che ottengo:

enter image description here

Come convinco ShareActionProvider per ottenere il tema Light?

+0

Penso aiuto per voi http://stackoverflow.com/questions/28591447/style-appcompat-v7- barra degli strumenti-menu-background – mustafasevgi

+1

Che non funziona –

+0

Puoi provare app: theme = "@ style/ThemeOverlay.AppCompat.Light", ma renderà la freccia su e l'icona del menu scure. – Harry

risposta

3

la mia soluzione è basata sulla libreria di supporto v7, barra degli strumenti, ActionBarActivity, Android Studio

1- rimuovere app:popupTheme="@style/ThemeOverlay.AppCompat.Light"

2- assicurarsi che il tema di base è Theme.AppCompat.Light.NoActionBar

3- andare a codice originale di ShareActionProvider digitando "ShareActionProvider" in qualsiasi punto del codice, quindi importa quello v7 quindi punta il mouse su di esso quindi (ctrl + clic sinistro)

4- copia il codice in esso d incollarlo in un nuovo file java in voi Directory Project

5- andare al tuo ShareActionProvider e rimuovere questa importazione se lo avete import android.support.v7.appcompat.R

6- fornire la propria icona di condivisione, perché quella di default è nero Drawable myDrawable = mContext.getResources().getDrawable(R.drawable.ic_share); activityChooserView.setExpandActivityOverflowButtonDrawable(myDrawable);

7- andare alla vostra attività e rimuovere l'importazione apportate nel passaggio 3 (per utilizzare il proprio file)

8- andare al vostro onCreateOptionsMenu che dovrebbe essere simile a questo:

@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- l'ultimo passo è non dimenticare di modificare il menu.xml

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

Questo non può funzionare. la classe dipende da alcune altre classi in Android che non sono pubbliche –

1

Questo è quello che ho fatto e ha funzionato. Volevo uno sfondo bianco in ShareActionProvider con essa il testo essere nero

<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"/> 

Il mio tema

<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>