Byłem też w obliczu tego samego problemu:
istnieje wiele sposobów można to osiągnąć zamiast usuwania obrazu:
1) można użyć odpowiedniego folderu rozciągliwej umieścić światło i ciemny obraz.
2) Można również zmienić kolor tła według kodu menu, sprawdzając wersję urządzenia.
Jeśli urządzenie nie obsługuje menu przepełnienia, można zmienić kolor tła menu, a także zmienić kolor tekstu menu.
Byłem też w obliczu tego samego problemu i rozwiązać za pomocą następujących jeden:
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) zmiana koloru tła z pliku 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>
Dla mnie wszystkie 3 pracował w porządku
Mam nadzieję, że to zadziała również dla Ciebie
może być zdjęcie, które można zobrazować? –
@KorniltsevAnatoly done – Andrew
Proponuję, aby opublikować to na stronie problemów ABS, ponieważ wydaje się, że jest to naprawdę zły błąd. Mam na myśli to, że nikt nie chce używać Light.DarkActionBar. Oto link do strony z problemami: https://github.com/JakeWharton/ActionBarSherlock/issues – DominicM