使用appcompat库的第21版时,?android:attr/actionBarSize
会返回48 dips,就好像它是Holo主题而不是Material。事实上,它有点大 - 56逢低。
是否有人为此问题找到了解决方法?
答案 0 :(得分:16)
不需要解决方法。如果您正在使用?android:attr/actionBarSize
,则android会查找您当前正在使用的平台中的值。如果您运行的Android版本低于5.0,结果将是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 + "");
注意:这将返回以像素为单位的大小。作为我目前运行4.4的Nexus 5的示例,它为 android.R.attr.actionBarSize 返回144px(48dp),为 R.attr返回168px(56dp)。 actionBarSize
答案 1 :(得分:-1)
这些适用于我使用appcompat v21
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarSize">46dp</item>
<item name="actionBarSize">46dp</item>
</style>