我正在尝试通过扩展RelativeLayout来创建自定义ViewGroup。
我在父布局上添加一些视图,通过dispatchDraw
绘制一些位图。
不幸的是,TextView会在最后被剪切并继续屏幕外的其余部分,因此下一行未正确继续。
likesTextView.setGravity(Gravity.LEFT);
likesTextView.setSingleLine(false);
likesTextView.setMovementMethod(LinkMovementMethod.getInstance());
RelativeLayout.LayoutParams likesParams = new RelativeLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
likesTextView.setLayoutParams(likesParams);
addView(likesTextView);
这些是我正在使用的布局参数。
viewPager.layout(0,0,getWidth(),400);
int finalWidth = 0;
if((int) likesTextView.getPaint().measureText(finalLikesText) - r > 0){
finalWidth = (int) likesTextView.getPaint().measureText(finalLikesText) - r + 100 + l;
}else{
finalWidth = getWidth();
}
Log.e(getClass().getSimpleName(),"Final Width:" + finalWidth);
Log.e(getClass().getSimpleName(),"MeasuredWidth:" + likesTextView.getMeasuredWidth() +
" MeasuredHeight:" + likesTextView.getMeasuredHeight());
likesTextView.measure(
MeasureSpec.makeMeasureSpec(likesTextView.getWidth(), MeasureSpec.EXACTLY),
MeasureSpec.makeMeasureSpec(likesTextView.getHeight(), MeasureSpec.EXACTLY)
);
likesTextView.layout(
100,
viewPager.getHeight(),
100 + likesTextView.getMeasuredWidth(),
likesTextView.getMeasuredHeight() + 400
);
这是onLayout
方法,我设置它的宽度和高度。
if (launcherBitmap != null) {
canvas.drawBitmap(
launcherBitmap,
0,
viewPager.getHeight(),
photoPaint
);
}
int x = 0, y = viewPager.getHeight() +
likesTextView.getMeasuredHeight() + 80;
for (String line: finalCommentsText.split("\n")) {
canvas.drawText(line, x, y, commentsPaint);
y += commentsPaint.descent() - commentsPaint.ascent();
}
if(launcherBitmap != null){
int initialXUtilities = 0;
canvas.drawBitmap(
launcherBitmap,
initialXUtilities,
y + 10,
photoPaint
);
canvas.drawBitmap(
launcherBitmap,
initialXUtilities + 100,
y + 10,
photoPaint
);
canvas.drawBitmap(
launcherBitmap,
initialXUtilities + 200,
y + 10,
photoPaint
);
}
super.dispatchDraw(canvas);
此方法是dispatchDraw
,我在屏幕上绘制一些位图。
结果就是这样。正如您在屏幕的右侧部分所看到的那样,文本在行之间没有正确连续。
这是我第一次尝试做这样的事情,如果可能的话,我会很感激。
已搜索过网络上的所有内容,但我发现的任何内容都没有帮助我完成此任务。
提前谢谢。