1
0
mirror of https://github.com/TwidereProject/Twidere-Android synced 2025-01-31 08:54:57 +01:00

fixed overflow icon sometimes not applied to theme color

This commit is contained in:
Mariotaku Lee 2015-04-28 02:36:34 +08:00
parent e99a370146
commit 85aa0299ab
4 changed files with 56 additions and 9 deletions

View File

@ -23,12 +23,18 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.support.v4.view.LayoutInflaterCompat; import android.support.v4.view.LayoutInflaterCompat;
import android.support.v7.widget.ActionMenuView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Window; import android.view.Window;
import org.mariotaku.twidere.Constants; import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.activity.iface.IThemedActivity; import org.mariotaku.twidere.activity.iface.IThemedActivity;
import org.mariotaku.twidere.util.ThemeUtils;
import org.mariotaku.twidere.util.ThemedLayoutInflaterFactory; import org.mariotaku.twidere.util.ThemedLayoutInflaterFactory;
import org.mariotaku.twidere.util.support.ViewSupport;
import java.lang.reflect.Field;
/** /**
* Created by mariotaku on 15/4/22. * Created by mariotaku on 15/4/22.
@ -54,9 +60,33 @@ public class ThemedAppCompatDelegate implements Constants {
private final IThemedActivity themed; private final IThemedActivity themed;
private ThemedAppCompatDelegateImplV11(IThemedActivity themed, Context context, Window window, AppCompatCallback callback) { private ThemedAppCompatDelegateImplV11(final IThemedActivity themed, final Context context,
Window window, AppCompatCallback callback) {
super(context, window, callback); super(context, window, callback);
this.themed = themed; this.themed = themed;
// try {
// final Field field = AppCompatDelegateImplV7.class.getDeclaredField("mInvalidatePanelMenuRunnable");
// field.setAccessible(true);
// final Runnable old = (Runnable) field.get(this);
// field.set(this, new Runnable() {
// @Override
// public void run() {
// if (old != null) {
// old.run();
// }
// final int themeColor = themed.getCurrentThemeColor();
// final int themeId = themed.getCurrentThemeResourceId();
// final int itemColor = ThemeUtils.getContrastActionBarItemColor(context, themeId, themeColor);
// final Toolbar toolbar = ThemeUtils.getToolbarFromActivity((Activity) themed);
// if (toolbar != null) {
// ThemeUtils.setActionBarOverflowColor(toolbar, itemColor);
// ThemeUtils.wrapToolbarMenuIcon(ViewSupport.findViewByType(toolbar, ActionMenuView.class), itemColor, itemColor);
// }
// }
// });
// } catch (Exception ignore) {
//
// }
} }
@Override @Override

View File

@ -234,9 +234,21 @@ public class LinkHandlerActivity extends BaseAppCompatActivity implements System
} }
@Override @Override
public boolean onPrepareOptionsMenu(Menu menu) { public boolean onPreparePanel(int featureId, View view, Menu menu) {
final boolean result = super.onPrepareOptionsMenu(menu); final boolean result = super.onPreparePanel(featureId, view, menu);
if (!shouldSetActionItemColor()) return result; if (shouldSetActionItemColor()) {
setupToolbarMenuItemColor();
mActionBarContainer.post(new Runnable() {
@Override
public void run() {
setupToolbarMenuItemColor();
}
});
}
return result;
}
private void setupToolbarMenuItemColor() {
final Toolbar toolbar = peekActionBarToolbar(); final Toolbar toolbar = peekActionBarToolbar();
if (toolbar != null) { if (toolbar != null) {
final int themeColor = getCurrentThemeColor(); final int themeColor = getCurrentThemeColor();
@ -245,7 +257,6 @@ public class LinkHandlerActivity extends BaseAppCompatActivity implements System
ThemeUtils.setActionBarOverflowColor(toolbar, itemColor); ThemeUtils.setActionBarOverflowColor(toolbar, itemColor);
ThemeUtils.wrapToolbarMenuIcon(ViewSupport.findViewByType(toolbar, ActionMenuView.class), itemColor, itemColor); ThemeUtils.wrapToolbarMenuIcon(ViewSupport.findViewByType(toolbar, ActionMenuView.class), itemColor, itemColor);
} }
return result;
} }
public final void setSubtitle(CharSequence subtitle) { public final void setSubtitle(CharSequence subtitle) {

View File

@ -65,9 +65,9 @@ public class SearchFragment extends BaseSupportFragment implements RefreshScroll
private ViewPager mViewPager; private ViewPager mViewPager;
private View mPagerWindowOverlay; private View mPagerWindowOverlay;
private TabPagerIndicator mPagerIndicator;
private SupportTabsAdapter mPagerAdapter; private SupportTabsAdapter mPagerAdapter;
private TabPagerIndicator mPagerIndicator;
private int mControlBarOffsetPixels; private int mControlBarOffsetPixels;
private int mControlBarHeight; private int mControlBarHeight;

View File

@ -71,6 +71,7 @@ import org.apache.commons.lang3.ArrayUtils;
import org.mariotaku.twidere.Constants; import org.mariotaku.twidere.Constants;
import org.mariotaku.twidere.R; import org.mariotaku.twidere.R;
import org.mariotaku.twidere.activity.iface.IThemedActivity; import org.mariotaku.twidere.activity.iface.IThemedActivity;
import org.mariotaku.twidere.activity.support.LinkHandlerActivity;
import org.mariotaku.twidere.graphic.ActionBarColorDrawable; import org.mariotaku.twidere.graphic.ActionBarColorDrawable;
import org.mariotaku.twidere.graphic.ActionIconDrawable; import org.mariotaku.twidere.graphic.ActionIconDrawable;
import org.mariotaku.twidere.text.ParagraphSpacingSpan; import org.mariotaku.twidere.text.ParagraphSpacingSpan;
@ -1070,9 +1071,7 @@ public class ThemeUtils implements Constants {
} }
} }
if (!(overflowView instanceof ImageView)) return; if (!(overflowView instanceof ImageView)) return;
final Drawable drawable = ((ImageView) overflowView).getDrawable(); ((ImageView) overflowView).setColorFilter(itemColor, Mode.SRC_ATOP);
if (drawable == null) return;
drawable.setColorFilter(itemColor, Mode.SRC_ATOP);
} }
public static void setActionBarOverflowColor(ActionMenuView actionMenuView, int itemColor) { public static void setActionBarOverflowColor(ActionMenuView actionMenuView, int itemColor) {
@ -1262,4 +1261,11 @@ public class ThemeUtils implements Constants {
} }
return 0; return 0;
} }
@Nullable
public static Toolbar getToolbarFromActivity(Activity activity) {
if (activity instanceof LinkHandlerActivity)
return ((LinkHandlerActivity) activity).peekActionBarToolbar();
return null;
}
} }