我正在为非英语市场创建一个应用程序。因此,我必须更改通知的字体。所以我必须使用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。
此处仅显示下一行的顶部,但不显示整行。如何使用静态布局显示整行?或者为什么没有完全显示?
这是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>