用于通知的Android自定义布局 - 问题与图像&文本

时间:2016-03-31 06:38:34

标签: android android-layout android-notifications

我正在尝试为通知构建自定义布局,但面临布局问题。图像显示在中间而非左侧,文本不可见。尝试过衬里布局,文字样式和颜色等,但没有运气。布局中缺少什么?

  

Custome_layout.xml

<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" >
    <ImageView android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10dp" />
    <TextView android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        style="Custom Notification Title" />
    <TextView android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/image"
        android:layout_below="@id/title"
        style="Custom Notification Text" />
</RelativeLayout>
  

Java代码

private void sendNotification(String title, String msg, String type, String imageURl, String fullid, String alert_price, int count) {
        WakeLocker.acquire(this);
        //msg = msg+"Amit this is testing for long text";
        long when = System.currentTimeMillis();
        //count = count+5;
        System.out.println(msg);
        mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);


        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this).setSmallIcon(R.drawable.logo);

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);
        contentView.setImageViewResource(R.id.image, R.drawable.logo);
        contentView.setTextViewText(R.id.title, "Amit notification");
        contentView.setTextViewText(R.id.text, msg);
        mBuilder.setContent(contentView);

        Notification notification = mBuilder.build();

        Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" +R.raw.sound);
        mNotificationManager.notify((int) when, notification);
        //RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_NOTIFICATION,     uri);
        Ringtone ring = RingtoneManager.getRingtone(getApplicationContext(), uri);
        ring.play();
        ((Vibrator) getApplicationContext().getSystemService( Context.VIBRATOR_SERVICE)).vibrate(1600);

        WakeLocker.release();
    }

enter image description here

2 个答案:

答案 0 :(得分:0)

试试这个。

您可能在定义@id时遇到问题,而不是使用@+id

只需替换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">

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginRight="10dp"
        android:contentDescription="@string/app_name"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/image"
        android:text="@string/app_name"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/title"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/image"
        android:text="@string/app_name"
        android:textSize="16sp" />
</RelativeLayout>

它完成了。

希望这会对你有所帮助。

答案 1 :(得分:0)

这是我正在使用的徽标图片大小的问题。使用75x75的较小图像,我的布局代码按预期工作。 这是一个错误,所以我不是选择这个作为答案,但它可能对将来的人有用......