New Theme.AppCompat ActionBar height

问题描述 投票:5回答:2

[使用appcompat库的21版时,?android:attr/actionBarSize返回48个DIP,就好像它是Holo主题而不是Material。实际上更大一点-56度。

有人找到解决此问题的方法吗?

android android-appcompat android-actionbar-compat
2个回答
16
投票

无需任何解决方法。如果您使用的是?android:attr/actionBarSize,则android会在您当前使用的平台中查找值。显然,如果您运行的Android版本低于5.0,则结果将为48dp。由于您在项目中使用appcompat-v7库,因此应使用?actionBarSize。这将按预期返回56dp,因为系统将在您的项目中查找值,该值由于appcompat-library而定义了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 + "");

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


-1
投票

这些使用appcompact v-21为我工作

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="android:actionBarSize">46dp</item>
            <item name="actionBarSize">46dp</item>
    </style>
© www.soinside.com 2019 - 2024. All rights reserved.