我试图调整我的ActionBar的大小,即使有很多关于这个的帖子似乎也没有人适合我。我想知道它是否与我刚刚升级到API 21的事实有关。这里是我的styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="colorPrimary">@color/Black</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="colorPrimaryDark">@color/Black</item>
<!-- theme UI controls like checkboxes and text fields -->
<!-- native widgets will now be "tinted" with accent color -->
<item name="colorAccent">@color/Moccasin</item>
<!--Action bar style-->
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="actionBarStyle">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.AppCompat.Light.ActionBar">
<item name="titleTextStyle">@style/AppTheme.ActionBar.TitleText</item>
<item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleText</item>
<item name="actionBarSize">40dp</item>
<item name="android:actionBarSize">40dp</item>
<item name="android:height">40dp</item>
</style>
<style name="AppTheme.ActionBar.TitleText" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textSize">16sp</item>
<item name="android:textColor">@color/DarkGreen</item>
</style>
我希望ActionBar更小,但其尺寸没有任何变化,例如文本大小和颜色按预期正确设置。有什么想法吗?
编辑:所以我通过添加
部分解决了这个问题<item name="height">40dp</item>
正如一些帖子中所建议的那样,但现在我得到这样的结果:
好像它被切割成所需的大小,同时仍然被格式化为原始的大小。我怎么解决这个问题?我尝试使用附加属性android:actionBarSize
,但没有成功。如果我将大小更改为80dp,问题仍然存在,我得到这个:
如何根据ActionBar尺寸调整抽屉图标和问号图标的大小和重新定位?
答案 0 :(得分:0)
调整ActionBar的大小
actionBarSize 是android:Theme中的一个attr,但实际用于控制actionbar的 height 的是attr of height。您可以在framewoks的themes.xml和styles.xml中查看它。
<!-- the following code is taken from API 21 frameworks. -->
<!-- themes.xml -->
<style name="Theme">
...
<item name="actionBarStyle">@style/Widget.ActionBar</item>
...
</style>
<!-- styles.xml -->
<style name="Widget.ActionBar">
<item name="background">@drawable/action_bar_background</item>
<item name="displayOptions">useLogo|showHome|showTitle</item>
<item name="divider">@drawable/action_bar_divider</item>
<!-- actionBarSize is just an attr in frameworks for supportting the default height of
actionbar
<item name="height">?attr/actionBarSize</item>
<item name="paddingStart">0dip</item>
<item name="paddingTop">0dip</item>
<item name="paddingEnd">0dip</item>
<item name="paddingBottom">0dip</item>
<item name="titleTextStyle">@style/TextAppearance.Widget.ActionBar.Title</item>
<item name="subtitleTextStyle">@style/TextAppearance.Widget.ActionBar.Subtitle</item>
<item name="progressBarStyle">@style/Widget.ProgressBar.Horizontal</item>
<item name="indeterminateProgressStyle">@style/Widget.ProgressBar.Small</item>
<item name="homeLayout">@layout/action_bar_home</item>
</style>
因此,有两种方法可以通过样式attr调整操作栏高度:
<item name="android:actionBarStyle">@style/xxx</item>
如何根据ActionBar尺寸调整抽屉图标和问号图标的大小和重新定位?
据我所知,没有官方方法可以调整ActionBar上“items”的垂直布局参数,默认的垂直布局参数是action-title的“align center”和抽屉的“align top”其他动作按钮,就你提到的尺寸而言,它们是固定的并符合“设计规格”。如果由于某种原因想要更改这些布局参数,请将以下代码段作为参考:
ViewGroup actionbarView = (ViewGroup) findViewById(R.id.action_bar);
for (int i = 0; i < actionbarView.getChildCount(); i++) {
// make toggle drawable center-vertical, you can change whatever layoutparameters as you wish
if (actionbarView.getChildAt(i) instanceof ImageButton) {
Toolbar.LayoutParams lp = (Toolbar.LayoutParams) actionbarView.getChildAt(i)
.getLayoutParams();
lp.height = 300;
lp.gravity = Gravity.CENTER_VERTICAL;
}
// make action button center-vertical
if (actionbarView.getChildAt(i) instanceof LinearLayout) {
Toolbar.LayoutParams lp = (Toolbar.LayoutParams) actionbarView.getChildAt(i)
.getLayoutParams();
lp.height = 200;
lp.gravity = Gravity.CENTER_VERTICAL;
}
}
因此,您可以看到它只是设置视图布局参数的常用方法,但您必须先检查ActionBar的视图结构,因为它可能会有所不同取决于您设置ActionBar的方法,例如扩展ActionBarActivityor或仅在目标android3.0及更高版本时扩展活动。