2017-04-10 5 views
1

Google's Universal Media Playerに基づいてメディアプレーヤーアプリを構築しています。今私はプレーヤーが作成する通知の問題に直面しています。NotificationCompat MediaStyleのテキストの色を変更できません

コードが通知を作成する:

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mService); 

notificationBuilder 
      .setStyle(new NotificationCompat.MediaStyle() 
       .setShowActionsInCompactView(
         new int[]{playPauseButtonPosition}) // show only play/pause in compact view 
       .setMediaSession(mSessionToken)) 
      .setColor(mNotificationColor) 
      .setSmallIcon(R.drawable.ic_notification) 
      .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) 
      .setUsesChronometer(true) 
      .setContentIntent(createContentIntent(description)) 
      .setContentTitle(description.getTitle()) 
      .setContentText(description.getSubtitle()) 
      .setLargeIcon(art); 

このコードは、次の通知を行う。その後 enter image description here

私はコードから.setColor(mNotificationColor)部分を除去します。私はそれが通知の背景を白にすると思った。しかし、背景は次のように灰色に変わります。 enter image description here

今、私は背景色を白に設定したい、これは簡単な部分です。 setColorは仕事をすることができますが、そのときはテキストの色を黒色にします。テキストの色を変更する方法を理解できません。黒いアイコンが表示されても、再生/一時停止のアイコンも変更されません。

enter image description here

答えて

0

このようないくつかのカスタム通知試してみてください:あなたは、通知を使用すると、内蔵の手段を使用してテキストを設定すると

、次の行は、レイアウトを作成します。

RemoteViews contentView = new RemoteViews(context.getPackageName(), 
      com.android.internal.R.layout.status_bar_latest_event_content); 

上記のレイアウトには、通知テキストの表示を担当する以下のビューが含まれています。

<TextView android:id="@+id/text" 
    android:textAppearance="@style/TextAppearance.StatusBar.EventContent" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:singleLine="true" 
    android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:paddingLeft="4dp" /> 

だから、結論は、必要なスタイルが定義は次のようになりますTextAppearance.StatusBar.EventContent、ということである。

<style name="TextAppearance.StatusBar.EventContent"> 
    <item name="android:textColor">#000000</item> 
</style> 

そして、ここではいくつかの参照です。 これで問題が解決することを願っています。

Link1

Link2

+0

私は<スタイル名= "TextAppearance.AppCompat.Notification.Title.Media" ツール:オーバーライドは= "真の"> 'を追加 <項目名= "アンドロイド:の、textColor"> @ color/app_primary_text 'これは[ソースコード](https://github.com/android/platform_frameworks_support/blob/master/v7/appcompat/res/layout/notification_template_lines_media.xml)にあるスタイル名です。 )。しかし、何も起こりません。テキストの色はまだ白です。 – Ratul

+0

tools:override = "true"を使用する理由は、_overriding @ style/TextAppearance_AppCompat_Notification_Title_Mediaで、com.android.support:appcompat-v7でプライベートとマークされています。意図的な場合は、tools:override = "true"を使用します。そうでない場合は、別の名前を指定します。 プライベートリソースは参照しないでください。どこにも存在していなくても、どこにいても予告なく消えることがあります。 これを修正するには、自分のプロジェクトにリソースをコピーします。これは、オーバーライドなしで使用すると表示されます。 – Ratul

+0

あなたのmin sdkとはどのデバイスがテスト済みですか? –

関連する問題