我在我的应用中添加了两个按钮,设置为目标API级别8.问题是这两个按钮显示为两个大的灰色按钮,与其余通知完全不同。我在Nexus 7和Galaxy Nexus上测试了它。
我见过的所有示例都有漂亮的黑色按钮,如来电通知: http://www.androidng.com/wp-content/uploads/2012/07/android-jelly-bean-notifications.jpeg
我猜这很容易,但今天没有这样的运气。有谁知道我可能走错了路?下面是我的代码片段,它使用最新的支持库生成通知。
NotificationManager nm = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
android.support.v4.app.NotificationCompat.Builder builder = new android.support.v4.app.NotificationCompat.Builder(this);
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.ic_stat_radio)
.setContentTitle(message)
.setTicker(message)
.setPriority(android.support.v4.app.NotificationCompat.PRIORITY_HIGH)
.setWhen(System.currentTimeMillis())
.setAutoCancel(false)
.addAction(android.R.drawable.ic_btn_speak_now, "Play", contentIntent)
.addAction(android.R.drawable.ic_dialog_map, "Stop", contentIntent)
.setContentText(message);
Notification n = builder.build();
//nm.notify(0, n);
startForeground(1, n);
答案 0 :(得分:11)
所以这种情况正在发生,因为AndroidManifest.xml中的targetSdk是< 11。
我相信当您定位11时发生的兼容性更改是默认主题,因为Holo。由于你的(和我的)目标小于11,它采用了一些适用于这些按钮的兼容性主题,即使它不应该。我假设即使您的应用/活动设置为Holo,它实际上并不适用于通知,因为它们处于不同的过程中。
这只是我的猜测。使用CommonsWare的通知演示只需修改targetSdk即可显示此行为。
答案 1 :(得分:0)
我使用Android studio (0.8.11)
和Gradle (0.13.0)
compileSdkVersion 20
buildToolsVersion "20.0"
defaultConfig {
applicationId "x.xx.xxxxxx"
minSdkVersion 10
targetSdkVersion 20
versionCode x
versionName "x.xx"
}
通过将uses-sdk
添加到Manifest
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="20" />
我知道Manifest
值将被Gradle
值覆盖重写。但那就解决了。