我最近已升级"我的Android项目到SDK版本26,现在我的应用栏中的图标看起来像this(在Android 6.0上运行),虽然图标本身看起来像this。我不知道为什么会这样,我没有改变java或xml代码中似乎与此相关的任何内容。 如果有人发布了解决方案,我将非常高兴,因为一旦Android 8发布,这可能是一个更大的问题。
的build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.1'
defaultConfig {
applicationId "de.jamesbeans.quadrasolve"
minSdkVersion 21
targetSdkVersion 26
versionCode 1
versionName "digit1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.android.support:percent:26.0.1'
}
activity_main.xml的相关部分:
<android.support.v7.widget.Toolbar
android:id="@+id/maintoolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimaryDark"
android:theme="@style/Widget.AppCompat.ActionBar"
android:visibility="visible"
app:popupTheme="@style/Theme.AppCompat.Light"
app:title="QuadraSolve"
app:titleTextColor="@android:color/background_light" />
MainActivity.java的相关部分:
Toolbar maintoolbar = (Toolbar) findViewById(R.id.maintoolbar);
setSupportActionBar(maintoolbar);
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mainmenu, menu);
return true;
}
mainmenu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_history"
android:icon="@mipmap/ic_history_48px"
android:title="@string/history"
app:showAsAction="ifRoom">
</item>
</menu>
答案 0 :(得分:0)
遇到同样的问题并偶然发现了这个似乎解决了问题的答案:
https://stackoverflow.com/a/45344964/4579919
问题是图标大小比预期大。显然,SDK 26中的扩展机制已经改变,现在它导致了这个UI错误。确保以下列大小提供工具栏图标资源。