Sono stato anche affrontando lo stesso problema:
ci sono molti modi per raggiungere questo obiettivo, piuttosto che la rimozione di immagine:
1) è possibile utilizzare rispettiva cartella drawable di mettere un'immagine scura luce e.
2) È inoltre possibile modificare il colore di sfondo in base al codice del menu controllando la versione del dispositivo.
Se il dispositivo non supporta il menu di overflow, è possibile modificare il colore di sfondo del menu e modificare il colore del testo del menu.
Sono stato anche affrontando lo stesso problema e risolto utilizzando seguente:
static final Class<?>[] constructorSignature = new Class[] {Context.class, AttributeSet.class};
class MenuColorFix implements LayoutInflater.Factory {
public View onCreateView(String name, Context context, AttributeSet attrs) {
if (name.equalsIgnoreCase("com.android.internal.view.menu.ListMenuItemView")) {
try {
Class<? extends ViewGroup> clazz = context.getClassLoader().loadClass(name).asSubclass(ViewGroup.class);
Constructor<? extends ViewGroup> constructor = clazz.getConstructor(constructorSignature);
final ViewGroup view = constructor.newInstance(new Object[]{context,attrs});
new Handler().post(new Runnable() {
public void run() {
try {
view.setBackgroundColor(Color.BLACK);
List<View> children = getAllChildren(view);
for(int i = 0; i< children.size(); i++) {
View child = children.get(i);
if (child instanceof TextView) {
((TextView)child).setTextColor(Color.WHITE);
}
}
}
catch (Exception e) {
Log.i(TAG, "Caught Exception!",e);
}
}
});
return view;
}
catch (Exception e) {
Log.i(TAG, "Caught Exception!",e);
}
}
return null;
}
}
public List<View> getAllChildren(ViewGroup vg) {
ArrayList<View> result = new ArrayList<View>();
for (int i = 0; i < vg.getChildCount(); i++) {
View child = vg.getChildAt(i);
if (child instanceof ViewGroup) {
result.addAll(getAllChildren((ViewGroup)child));
}
else {
result.add(child);
}
}
return result;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
LayoutInflater lInflater = getLayoutInflater();
if (lInflater.getFactory() == null) {
lInflater.setFactory(new MenuColorFix());
}
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.myMenu, menu);
}
3) cambiano colore di sfondo da file styles.xml
<style name="Theme.MyTheme" parent="Theme.Sherlock.ForceOverflow">
<item name="actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.MyTheme.ActionBar</item>
</style>
<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar">
<item name="android:background">#ff000000</item>
<item name="background">#ff000000</item>
</style>
Per me, tutte le 3 ha funzionato bene
Speranza, questo funzionerà per voi pure
potresti essere in grado di scattare una foto di esso? –
@KorniltsevAnatoly fatto – Andrew
Ti suggerisco di postare questo nella pagina dei problemi ABS in quanto sembra essere un errore molto brutto. Voglio dire che nessuno vuole usare Light.DarkActionBar. Ecco un collegamento alla pagina dei problemi: https://github.com/JakeWharton/ActionBarSherlock/issues – DominicM