Como formatar texto de notificação

bom galera o meu problema é conseguir formatar o texto dentro da caixa de notificação, esse texto ele vem de uma coluna do SQLite que o próprio usuário preenche, eu quero que o texto inteiro apareça dentro dessa caixa e não uma linha continua que vai embora e sai dos limites dessa caixa, eu queria saber se tem algum método que formate esse texto na caixa de notificação, ou se pelo menos tem como saber quantos caracteres eu posso colocar em cada linha?

dando um chute as segas cara, acho que se você colocar um \n talvez funcione, porem como você disse que o texto vem de um SQLite imagino que varia de tamanho então você teria que fazer um padrão, tipo a cada 20 characters ele enche uma linha… algo assim, porem deve ter algum jeito mais simples de se resolver isso. Como eu disse, um chute as segas.

bom eu também pensei em fazer isso a cada X caracteres mudar de linha, mas ai tem um problema, se eu colocar um valor fixo, por causa do variedades de tanho de telas dos aparelhos, vai ter aparelho que vai ficar bom, mas vai ter outros que vai sobrar ou faltar espaço na linha.

essa é a lógica que atualmente escreve cada uma das notificações, ela segue esse esquema a cada 30 caracteres pula uma linha.

o “cursor” é o que recebe o resultado da query do SQLite

                    NotificationCompat.Builder builder = new NotificationCompat.Builder(contesto);
                    builder.setTicker("Novo evento começou");
                    builder.setContentTitle("Novo evento começou");
                    String testo = cursor.getString(cursor.getColumnIndex("conteudo"));
                    builder.setSmallIcon(R.drawable.icone_notificacao);
                    builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.icone_notificacao));
                    builder.setContentIntent(pi);

                    GregorianCalendar dataEvePerd = new GregorianCalendar();
                    NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();

                    dataEvePerd.setTimeInMillis(cursor.getLong(cursor.getColumnIndex("data")));

                    style.addLine("Data: " + dataEvePerd.get(Calendar.DAY_OF_MONTH) + "/" + dataEvePerd.get(Calendar.MONTH) + "/" + dataEvePerd.get(Calendar.YEAR));
                    if(dataEvePerd.get(Calendar.MINUTE) < 10) {
                        style.addLine("Hora: " + dataEvePerd.get(Calendar.HOUR_OF_DAY) + ":0" + dataEvePerd.get(Calendar.MINUTE));
                    }else {
                        style.addLine("Hora: " + dataEvePerd.get(Calendar.HOUR_OF_DAY) + ":" + dataEvePerd.get(Calendar.MINUTE));
                    }
                    style.addLine("Evento:");

                    int finau = 0;
                    String temp = "";
                    String pala = "";
                    for (int a = 0; a < testo.length(); a++) {
                        String temp2 = "";
                        temp2 = temp2 + testo.charAt(a);

                        if(temp2.equals(" ")){
                            if(temp.length() + 1 + pala.length() > 30/*** tamanho da linha ***/){
                                style.addLine(""+temp);
                                temp = "";
                                temp = pala;
                                pala = "";
                            }else{
                                if(temp.length() == 0){
                                    temp = temp + pala;
                                    pala = "";
                                }else{
                                    temp = temp + " "+ pala;
                                    pala = "";
                                }
                            }
                        }else{
                            pala = pala + testo.charAt(a);
                        }

                    }
                    if(temp.length() + 1 + pala.length() > 30/*** tamanho da linha ***/){
                        style.addLine(""+temp);
                        style.addLine(""+pala);
                    }else{
                        style.addLine(""+temp+" "+ pala);
                    }

                    style.setSummaryText(".");
                    builder.setStyle(style);

                    Notification n = builder.build();
                    n.vibrate = new long[]{150, 300, 150, 300, 150, 300};
                    n.flags = Notification.FLAG_AUTO_CANCEL;
                    nota.notify((int)(Math.random()*9999), n);

boa, bem lembrado. Se voce pensar o android tudo e view, toda view tem um tamanho, oque deve estar rolando e que ela ta math_parent no width, se voce arrumar um jeito de por wrap_content funcionaria, porque ai ele teria o tamanho que o cabe.
Talvez o tipo de notificacao esteja errado, e as vezes no meu aparelho recebo notificacoes que nao da para ler elas, porque estao sumindo da tela, entao eu arrasto para baixo e aparece o texto total da notificacao.

o que me faz acreditar que realmente tem uma forma de fazer isso, é que toda vez que eu recebo um SMS (tenho um android 4.4.4) o texto da mensagem aparece na notificação encaixado corretamente.

opa resolvi, bom pelo menos achei “UMA” maneira de se fazer isso funcionar, o que eu fiz foi criar um layout em xml para poder exibir a notificação, assim eu pude colocar o texto dentro de uma TextView ai ela faz todo o trabalho por min, eu segui essa pagina http://developer.android.com/intl/pt-br/samples/CustomNotifications/src/com.example.android.customnotifications/MainActivity.html é bem tranquilo de se usar o RemoteViews, e o meu código que escreve cada notificação agora ficou assim

                    NotificationManager nota = (NotificationManager) getSystemService(contesto.NOTIFICATION_SERVICE);
                    PendingIntent pi = PendingIntent.getActivity(contesto, 0, new Intent(contesto, MainActivity.class), 0);

                    NotificationCompat.Builder builder = new NotificationCompat.Builder(contesto);
                    builder.setTicker("Novo evento começou");
                    builder.setContentTitle("Novo evento começou");
                    String testo = cursor.getString(cursor.getColumnIndex("conteudo"));
                    builder.setSmallIcon(R.drawable.icone_notificacao);
                    builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.icone_notificacao));
                    builder.setContentIntent(pi);

                    Date dataEvePerd = new Date();

                    dataEvePerd.setTime(cursor.getLong(cursor.getColumnIndex("data")));

                    Notification n = builder.build();

                    SimpleDateFormat dt = new SimpleDateFormat("dd/MM/yyyy HH:mm");
                    String texto = dt.format(dataEvePerd);

                    /*************** notificação resumida **************/
                    RemoteViews viewremotacontra = new RemoteViews(getPackageName(), R.layout.layout_da_notificacao_contraida);

                    viewremotacontra.setTextViewText(R.id.textnotifcontraido, "Data: " + texto);
                    viewremotacontra.setTextViewText(R.id.textonotificatitulo, "Novo Evento");

                    n.contentView = viewremotacontra;
                    /********** notificação expandida *************/
                    RemoteViews viewremotaexpand = new RemoteViews(getPackageName(), R.layout.layout_da_notificacao_expandido);

                    viewremotaexpand.setTextViewText(R.id.ntextnotifcontraido, "Data: "+texto+"\n"+testo);
                    viewremotaexpand.setTextViewText(R.id.ntextonotificatitulo, "Novo Evento");

                    n.bigContentView = viewremotaexpand;


                    n.vibrate = new long[]{150, 300, 150, 300, 150, 300};
                    n.flags = Notification.FLAG_AUTO_CANCEL;
                    nota.notify((int) (Math.random() * 9999), n);