新建主题.AppCompat ActionBar高度



当使用appcompat库的版本21时,?android:attr/actionBarSize返回48个dip,就好像它是Holo主题而不是Material一样。事实上,它有点大——56次下降。

有人找到解决这个问题的方法了吗?

不需要任何变通方法。如果你正在使用?android:attr/actionBarSize,android会在你当前使用的平台表单中查找值。显然,如果你运行的是5.0以下的Android版本,结果将是48dp
由于您在项目中使用的是appcompat-v7库,因此应该使用?actionBarSize。这将按预期返回56dp,因为系统将在您的项目中查找该值,该项目由于appcompat库而定义了actionBarSize。

如果你想自己尝试,这里有一个小代码片段来测试所描述的行为:

int[] textSizeAttr = new int[] { android.R.attr.actionBarSize, R.attr.actionBarSize };
TypedArray a = obtainStyledAttributes(new TypedValue().data, textSizeAttr);
float heightHolo = a.getDimension(0, -1);
float heightMaterial = a.getDimension(1, -1);
Log.d("DEBUG", "Height android.R.attr.: " + heightHolo + "");
Log.d("DEBUG", "Height R.attr.: " + heightMaterial + "");

注意:这将返回以像素为单位的大小。例如,我的Nexus 5目前运行4.4,它为android.R.attr.actionBarSize返回144px(48dp),为R.attr.actionBarSize.

返回168px(56dp)

这些对我使用appcompact v-21 很有用

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="android:actionBarSize">46dp</item>
            <item name="actionBarSize">46dp</item>
    </style>

最新更新