使用自定义布局将staticlayout的高度与通知中的通知高度相匹配

时间:2016-07-01 13:48:17

标签: android android-notifications

我正在为非英语市场创建一个应用程序。因此,我必须更改通知的字体。所以我必须使用Bitmap。我希望通知是多行的。我有以下代码。

        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);
        TextPaint paintTitle = new TextPaint();
        paintTitle.setAntiAlias(true);
        paintTitle.setSubpixelText(true);
        paintTitle.setTypeface(AppApplication.hindiFont);
        paintTitle.setStyle(Paint.Style.FILL);
        paintTitle.setColor(ContextCompat.getColor(context, R.color.positive));
        paintTitle.setTextSize(70);
        paintTitle.setFakeBoldText(true);
        paintTitle.setTextAlign(Paint.Align.LEFT);
        String longText = "vuqla/kkuksa ls irk pyk fd bl enn djrk gS fd yksx dSyksjh dh la[;k os miHkksx dks de dj fn;k gSA";
        StaticLayout staticLayout = new StaticLayout(longText, paintTitle, canvasTitle.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); 
        canvasTitle.save();
        staticLayout.draw(canvasTitle);
        canvasTitle.restore();

我没有使用canvasTitle.drawText(),因为根据通知的宽度,它无法包装长字符串。因此,我按照here所示的方法建议使用staticlayout。

我得到以下输出: enter image description here

此处仅显示下一行的顶部,但不显示整行。如何使用静态布局显示整行?或者为什么没有完全显示?

这是xml:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_notification"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="2dp">

<ImageView
    android:id="@+id/rnotification_iv_logo"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_gravity="center_vertical"
    android:src="@drawable/notification_icon"/>

<ImageView
    android:id="@+id/rnotification_iv_title"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_marginTop="2dp"
    android:layout_gravity="center_vertical"
    android:paddingRight="5dp" />

</LinearLayout>

0 个答案:

没有答案