Reputation: 15054
When using version 21 of appcompat library, ?android:attr/actionBarSize
returns 48 dips as if it was Holo theme and not Material. In fact it's a bit bigger - 56 dips.
Has anyone found a workaround for this issue?
Upvotes: 6
Views: 17134
Reputation: 213
These worked for me using appcompact v-21
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarSize">46dp</item>
<item name="actionBarSize">46dp</item>
</style>
Upvotes: -1
Reputation: 35264
There's no workaround needed. If you're using ?android:attr/actionBarSize
android will look up the value in the plattform you're currently using. The result will be 48dp if you're running an Android-Version below 5.0, obviously.
Since you're using the appcompat-v7
library in your project you should use ?actionBarSize
. This will return 56dp as expected, because the system will look up the value in your project, which has the actionBarSize defined because of the appcompat-library.
If you wanna try this on your own, here's a little code-snippet to test the described behaviour:
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 + "");
Note: This will return the size in pixels. As an example on my Nexus 5, which is running 4.4 at the moment, it returns 144px(48dp) for android.R.attr.actionBarSize and 168px (56dp) for R.attr.actionBarSize.
Upvotes: 16