Android 开发 Tip 19 -- 修改Menu的字体大小和样式
2017-09-01 14:06
543 查看
转载请注明出处:http://blog.csdn.net/crazy1235/article/details/51820937
AppCompatDelegateImpl.java
WindowDecorActionBar.java
actionOverflowButtonStyle
abc_ic_menu_overflow_material.xml
V21
AppCompatDelegateImpl.java
@Override public void initWindowDecorActionBar() { ensureSubDecor(); if (!mHasActionBar || mActionBar != null) { return; } if (mOriginalWindowCallback instanceof Activity) { mActionBar = new WindowDecorActionBar((Activity) mOriginalWindowCallback, mOverlayActionBar); } else if (mOriginalWindowCallback instanceof Dialog) { mActionBar = new WindowDecorActionBar((Dialog) mOriginalWindowCallback); } if (mActionBar != null) { mActionBar.setDefaultDisplayHomeAsUpEnabled(mEnableDefaultActionBarUp); } }
WindowDecorActionBar.java
public WindowDecorActionBar(Activity activity, boolean overlayMode) { mActivity = activity; Window window = activity.getWindow(); View decor = window.getDecorView(); init(decor); if (!overlayMode) { mContentView = decor.findViewById(android.R.id.content); } }
private void init(View decor) { mOverlayLayout = (ActionBarOverlayLayout) decor.findViewById(R.id.decor_content_parent); if (mOverlayLayout != null) { mOverlayLayout.setActionBarVisibilityCallback(this); } mDecorToolbar = getDecorToolbar(decor.findViewById(R.id.action_bar)); mContextView = (ActionBarContextView) decor.findViewById( R.id.action_context_bar); mContainerView = (ActionBarContainer) decor.findViewById( R.id.action_bar_container); if (mDecorToolbar == null || mContextView == null || mContainerView == null) { throw new IllegalStateException(getClass().getSimpleName() + " can only be used " + "with a compatible window decor layout"); } mContext = mDecorToolbar.getContext(); // This was initially read from the action bar style final int current = mDecorToolbar.getDisplayOptions(); final boolean homeAsUp = (current & DISPLAY_HOME_AS_UP) != 0; if (homeAsUp) { mDisplayHomeAsUpSet = true; } ActionBarPolicy abp = ActionBarPolicy.get(mContext); setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp); setHasEmbeddedTabs(abp.hasEmbeddedTabs()); final TypedArray a = mContext.obtainStyledAttributes(null, R.styleable.ActionBar, R.attr.actionBarStyle, 0); // !!! actionBarStyle if (a.getBoolean(R.styleable.ActionBar_hideOnContentScroll, false)) { setHideOnContentScrollEnabled(true); } final int elevation = a.getDimensionPixelSize(R.styleable.ActionBar_elevation, 0); if (elevation != 0) { setElevation(elevation); } a.recycle(); }
<style name="Base.V7.Theme.AppCompat.Light" parent="Platform.AppCompat.Light"> //... <!-- Action Bar Styles --> <item name="actionBarTabStyle">@style/Widget.AppCompat.Light.ActionBar.TabView</item> <item name="actionBarTabBarStyle">@style/Widget.AppCompat.Light.ActionBar.TabBar</item> <item name="actionBarTabTextStyle">@style/Widget.AppCompat.Light.ActionBar.TabText</item> <item name="actionButtonStyle">@style/Widget.AppCompat.Light.ActionButton</item> <item name="actionOverflowButtonStyle">@style/Widget.AppCompat.Light.ActionButton.Overflow</item> <item name="actionOverflowMenuStyle">@style/Widget.AppCompat.Light.PopupMenu.Overflow</item> <item name="actionBarStyle">@style/Widget.AppCompat.Light.ActionBar.Solid</item> <item name="actionBarSplitStyle">?attr/actionBarStyle</item> <item name="actionBarWidgetTheme">@null</item> <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.ActionBar</item> <item name="actionBarSize">@dimen/abc_action_bar_default_height_material</item> <item name="actionBarDivider">?attr/dividerVertical</item> <item name="actionBarItemBackground">?attr/selectableItemBackgroundBorderless</item> <item name="actionMenuTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Menu</item> <item name="actionMenuTextColor">?android:attr/textColorPrimaryDisableOnly</item> </style>
actionOverflowButtonStyle
<style name="Widget.AppCompat.Light.ActionButton.Overflow" parent="Widget.AppCompat.ActionButton.Overflow"/>
<style name="Widget.AppCompat.ActionButton.Overflow" parent="Base.Widget.AppCompat.ActionButton.Overflow"/>
<style name="Base.Widget.AppCompat.ActionButton.Overflow" parent="RtlUnderlay.Widget.AppCompat.ActionButton.Overflow"> <item name="srcCompat">@drawable/abc_ic_menu_overflow_material</item> <item name="android:background">?attr/actionBarItemBackground</item> <item name="android:contentDescription">@string/abc_action_menu_overflow_description</item> <item name="android:minWidth">@dimen/abc_action_button_min_width_overflow_material</item> <item name="android:minHeight">@dimen/abc_action_button_min_height_material</item> </style>
abc_ic_menu_overflow_material.xml
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0" android:tint="?attr/colorControlNormal"> <path android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2c-1.1,0 -2,0.9 -2,2S10.9,8 12,8zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2c1.1,0 2,-0.9 2,-2S13.1,10 12,10zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2c1.1,0 2,-0.9 2,-2S13.1,16 12,16z" android:fillColor="@android:color/white"/> </vector>
V21
<style name="Base.Widget.AppCompat.ActionButton.Overflow" parent="android:Widget.Material.ActionButton.Overflow">
<style name="Widget.Material.ActionButton.Overflow"> <item name="src">@drawable/ic_menu_moreoverflow_material</item> <item name="background">?attr/actionBarItemBackground</item> <item name="contentDescription">@string/action_menu_overflow_description</item> <item name="minWidth">@dimen/action_button_min_width_overflow_material</item> <item name="minHeight">@dimen/action_button_min_height_material</item> <item name="paddingStart">@dimen/action_bar_overflow_padding_start_material</item> <item name="paddingEnd">@dimen/action_bar_overflow_padding_end_material</item> </style>
相关文章推荐
- 【android开发】 修改控件Spinner内容的字体大小 颜色等属性
- Android 开发之修改 app 的字体大小(老人模式)
- 【android开发】 修改控件Spinner内容的字体大小 颜色等属性
- Android 4.4 高通平台如何修改Contacts的Menu中字体大小?
- Android 修改全局自定义字体样式(字形,大小)※
- eclipse中android开发怎么修改xml文件字体大小
- android开发之修改全局自定义字体
- [Flex]Flex编程注意之修改CategoryAxis的字体样式(大小、颜色、粗斜体等)
- 修改Tabhost样式和字体大小的方法
- 修改Android系统字体大小
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间+修改屏幕休眠时间+修改usb debug默认关闭+mtk修改默认字体大小
- ios开发之改变UIWebView文本字体的样式和大小
- 修改Tabhost样式和字体大小和居中显示
- [Android开发常见问题-9] android如何给PagerTitleStrip设置字体大小
- android设置系统语言,字体大小,字体样式导致widget控件失效
- android 设置Spinner文字标题颜色 字体大小样式
- 如何在Android系统上修改系统默认的字体大小
- android4.1 修改默认字体大小
- 修改android系统字体大小
- Flex编程注意之修改CategoryAxis的字体样式(大小、颜色、粗斜体等)