Android personnalisée de notification de mise en page avec RemoteViews
Je suis en train de créer une fonction de notification personnalisée pour mon application android à l'aide de cette post, et je suis tombé sur un problème que j'ai tenté de résoudre le problème pour les 2 dernières heures.
Seulement l'imageview de ma mise en page montre, et je ne peux pas comprendre comment le faire il fonctionne comme prévu.
Mon code:
package be.ac.ucl.lfsab1509.cumulus.services;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
import android.widget.RemoteViews;
import be.ac.ucl.lfsab1509.cumulus.R;
import be.ac.ucl.lfsab1509.cumulus.activities.MainActivity;
import be.ac.ucl.lfsab1509.cumulus.entities.Song;
public class CumulusNotification {
private CumulusService mCtx;
private CumulusMediaPlayer mPlayer;
private Notification mNotification;
private NotificationCompat.Builder mBuilder;
private RemoteViews mContentView;
public CumulusNotification(CumulusService ctx, CumulusMediaPlayer player){
mCtx = ctx;
mPlayer = player;
mBuilder = new NotificationCompat.Builder(
mCtx);
mBuilder.setSmallIcon(R.drawable.ic_stat_cumulus_notification);
//mBuilder.setContentTitle("Cumulus is playing");
//mBuilder.setTicker("Cumulus");
//mBuilder.setContentText(mCtx.getCurrentSong().title());
Intent resultIntent = new Intent(mCtx, MainActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
resultIntent.setAction(Intent.ACTION_MAIN);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(mCtx);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
mContentView = new RemoteViews(mCtx.getPackageName(), R.layout.statusbar);
mContentView.setImageViewResource(R.id.notifimage, R.drawable.cumulus_icon);
mContentView.setTextViewText(R.id.notiftitle, "Custom notification");
mContentView.setTextViewText(R.id.notiftext, "This is a custom layout");
mBuilder.setContent(mContentView);
}
public void startNotification() {
mNotification = mBuilder.build();
//mNotification.contentView = mContentView;
mCtx.startForeground(R.integer.NOTIFICATION_ID, mNotification);
}
public void updateSong(Song song){
mBuilder.setContentText(song.title());
mNotification = mBuilder.build();
mCtx.startForeground(R.integer.NOTIFICATION_ID, mNotification);
}
}
Le fichier xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:gravity="left" >
<ImageView android:id="@+id/notifimage"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp" />
<TextView android:id="@+id/notiftitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/notifimage" />
<TextView android:id="@+id/notiftext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/notifimage"
android:layout_below="@id/notiftitle" />
</RelativeLayout>
Merci pour l'aide
Si vous postez le statusbar.xml que ferait vous aider à résoudre la mise en page beaucoup plus facile...
Fait! Comme je l'ai dit, comme dans le post original
avez-vous été en mesure de le résoudre ? Je suis confronté à la même question. Thx
Pourquoi avez-vous
Fait! Comme je l'ai dit, comme dans le post original
avez-vous été en mesure de le résoudre ? Je suis confronté à la même question. Thx
Pourquoi avez-vous
android:layout_toRightOf="@id/notifimage"
sur les deux TextViews?OriginalL'auteur HappyRave | 2014-04-22
Vous devez vous connecter pour publier un commentaire.
Problème est que vous n'avez pas mis le bon contentView.
Mais votre vue à distance est mContentView. changer de
Voici un exemple de
Avez-vous essayé mon code d'exemple
Aussi, supprimer le style de mise en page que vous avez défini pour TextView. il doit être valide Style si nécessaire
OriginalL'auteur Libin
Vous pouvez voir exemple ici:
http://www.laurivan.com/android-notifications-with-custom-layout/
Je pense, en ajoutant
votre constructeur peut résoudre le problème.
OriginalL'auteur Artem Kleinschmidt
Je pense que c'est juste un problème de mise en page, plus je pense à ce sujet. Je pense que si vous définissez
android:layout_alignParentRight="true"
sur leTextView
s, vous obtenez ce que vous recherchez. On dirait qu'il pose pour le droit de laImageView
, mais pas de leur donner toute la largeur à disposition de temps, car ils ne demandent pas de tout, et ils n'ont pas de contenu.Si cela ne fonctionne pas, faites le nous savoir!
OriginalL'auteur Travis
Cette post explique très cool.
Essentiellement, et donc:
OriginalL'auteur Douglas Mesquita