2016-07-01 7 views
2

英語以外の市場向けのアプリを作成しています。したがって、私は通知のフォントを変更する必要があります。私は次のコードを持っています。しかし通知が来るたびに、それは空白であり、ロゴやテキストは表示されません。上部に小さいアイコンが表示されます。カスタム通知のレイアウトを使用して空白の通知を取得する

 DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); 
     int width = displayMetrics.widthPixels; 

     Bitmap bitmapTitle = Bitmap.createBitmap(width - 72, 84, Bitmap.Config.ARGB_8888); 
     Canvas canvasTitle = new Canvas(bitmapTitle); 
     Paint paintTitle = new Paint(); 
     paintTitle.setAntiAlias(true); 
     paintTitle.setSubpixelText(true); 
     paintTitle.setTypeface(AppApplication.hindiFont); //Font in Hindi 
     paintTitle.setStyle(Paint.Style.FILL); 
     paintTitle.setColor(ContextCompat.getColor(context, R.color.positive)); 
     paintTitle.setTextSize(70); 
     paintTitle.setFakeBoldText(true); 
     paintTitle.setTextAlign(Paint.Align.LEFT); 
     canvasTitle.drawText("pqrst", 80, 60, paintTitle); 

     Bitmap bitmapText = Bitmap.createBitmap(width - 72, 84, Bitmap.Config.ARGB_8888); 
     //Similar code as above for bitmapText 

     int notificationID = (int) System.currentTimeMillis(); 
     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     Intent notificationIntent = new Intent(context, MainActivity.class); 
     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
     RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.notification_row); 
     contentView.setImageViewBitmap(R.id.rnotification_iv_title, bitmapTitle); 
     contentView.setImageViewBitmap(R.id.rnotification_iv_text, bitmapText); 

     Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     Notification.Builder notificationBuilder = new Notification.Builder(context); 
     Notification notification = notificationBuilder 
       .setSmallIcon(R.drawable.small_icon) 
       .setPriority(Notification.PRIORITY_HIGH) 
       .setSound(alarmSound) 
       .setAutoCancel(true) 
       .setWhen(System.currentTimeMillis()) 
       .setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS) 
       .setStyle(new Notification.BigPictureStyle().bigPicture(BitmapFactory.decodeResource(context.getResources(), R.drawable.drawer_image))) 
       .build(); 
     notification.contentIntent = pendingIntent; 
     notification.contentView = contentView; 
     notificationManager.notify(notificationID, notification); 

これは私が任意のソース見つけていませんでしたけれどもカスタムコンテンツViewとリッチコンテンツのスタイルは一緒にうまく機能していないようだXML

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/custom_notification" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_gravity="center_vertical" 
android:padding="2dp"> 

<ImageView 
    android:id="@+id/rnotification_iv_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="2dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_alignParentTop="true"/> 

<ImageView 
    android:id="@+id/rnotification_iv_text" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="2dp" 
    android:layout_marginLeft="5dp" 
    android:layout_marginRight="5dp" 
    android:layout_below="@+id/rnotification_iv_title" 
    android:layout_alignParentLeft="true"/> 

+0

リッチコンテンツスタイルのように見えますが、カスタムコンテンツ 'View'は一緒に動作しませんが、私は明示的にはそうではないとは思わないものは見つかりませんでした。私も 'bigContentView'を手動で設定しようとしましたが、それはもっと悪いことでした。それはあなたが "通常の"通知領域で行うことができる唯一のものは、タイトルが設定されているように見えます。回避策としては、 'drawer_image'を調整して上部に空白スペースを追加し、代わりにタイトルとテキストを描画する方法があります。 –

+1

ありがとうございます。それが問題でした。私はイメージを格納するようにレイアウトを変更し、 'setStyle'を削除しました。 'bigContentView'を試してみると、それもうんざりしてしまいました。答えとしてあなたのコメントを書いてください。 – suku

+0

ああ、そうだよ。なぜ私はそれを考えなかったのか分からない。いいですよ。乾杯! –

答えて

0

ある - 公式をそうでなければ明示的にそうしないと言います。スタイルが設定されている場合は、明らかに通常のNotification領域に許可されている唯一のものがタイトルです。

解決策はすべてRemoteViewsを作成し、すべてを1つのレイアウトに保持し、setStyle()を使用しないようにすることです。

関連する問題