在使用21版本的appcompat库时,?android:attr/actionBarSize
返回的值是48 dips,就像是Holo主题而不是Material主题。事实上它更大一些 - 56 dips。
有人找到了这个问题的解决方法吗?
在使用21版本的appcompat库时,?android:attr/actionBarSize
返回的值是48 dips,就像是Holo主题而不是Material主题。事实上它更大一些 - 56 dips。
有人找到了这个问题的解决方法吗?
不需要任何解决方法。如果您正在使用?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 + "");
注意:此将返回像素大小。例如,在我的 Nexus 5 上,目前运行的是4.4版本,android.R.attr.actionBarSize 返回 144像素(48 dp),R.attr.actionBarSize 返回 168像素(56 dp)。
这些对我来说在使用appcompact v-21时有效
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarSize">46dp</item>
<item name="actionBarSize">46dp</item>
</style>
android.R.attr.actionBarSize
大小为48dp。现在在5.0上,android.R.attr.actionBarSize
和R.attr.actionBarSize
相同(56dp)。 - reVersea.recycle();
。 - natinusala