昨天我切换到新的支持库26,我还不得不将已弃用的AppBarActivity更改为AppCompatActivity,因为它不再存在。
我遇到的问题与下面的链接中描述的相同,但“清理”或“重建”无法解决问题。 Why option menu items squeezed if I use support library 26?
我在hdpi和xhdpi中拥有所有图标。有些还在mdpi和ldpi ......
那么为什么我的工具栏图标会受到挤压?
以下是我在所有布局中使用的代码,它与所有以前的支持库一起使用(我总是使用最新的版本!):
<android.support.design.widget.AppBarLayout
android:id="@+id/myAppBar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize" />
</android.support.design.widget.AppBarLayout>
我的所有图标都被定义为attr,因此我可以提供浅色和深色版本。
<item
android:id="@+id/action_logbook"
android:icon="?attr/icon_book"
android:orderInCategory="100"
android:title="@string/logbook"
yourapp:showAsAction="ifRoom"/>
这是icons.xml中的attr
<attr name="icon_book" format="reference"/>
这是提供实际图标的样式:
<style name="MyBaseThemeLight" parent="Theme.AppCompat.Light.NoActionBar">
<item name="icon_book">@drawable/icon_book_white</item>
</style>
更新: 当我将ImageView直接放在工具栏中时,它正在工作:
<android.support.design.widget.AppBarLayout
android:id="@+id/myAppBar"
style="@style/myAppBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="?attr/bt_expenses" />
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
UDATE 2: 对我来说,ActionMenuItemView版本26中的代码更改似乎是问题,因为它没有调整图标大小以保持宽度和高度相等:
请参阅:
public void setIcon(Drawable icon)
...
答案 0 :(得分:3)
解决方法似乎使用Android Studio中的Image Asset Studio再次生成图标资源。之前我没有使用该工具,并将图标图像手动放在不同的分辨率文件夹中。似乎com.android.support:appcompat-v7:26.0.0改变了图像分辨率,我的旧hdpi图标是72x72,生成的hdpi图标现在是48x48。
答案 1 :(得分:1)
这两个动作栏有所不同。最小高度是根据属性设置的,但两者的高度值都设置为 wrap_content 。
第一个栏包含一个带有km的第二行,它通过包裹两个文本视图来扩展App Bar的高度。第二个上的图标会缩小,因为它们可能还具有设置为wrap_content的属性。
如果您在更改为AppCompatActivity后显示两个具有相同设计和比较的App Bar会更好。
答案 2 :(得分:1)
在Android问题跟踪器上查看此主题,我在其中解释了错误:https://issuetracker.google.com/issues/64207386。我还重新编译了库以解决问题。附在此处:https://issuetracker.google.com/issues/64207386#comment19。
编辑:问题已于26.0.2修复