Use*_*er3 4 android android-layout android-xml
我必须设计一个三角形并在其中显示一些角度为45的文本,我必须将文本视图放在三角形的边界之外以显示其他文本.它就像一面旗帜.但是,当我使用相对布局并放置三角形背景时,它仍然充当矩形,遮挡了我的文本视图.以下是我使用的代码:
<RelativeLayout
android:id="@+id/relative"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@drawable/image_sticker" >
<com.example.AngledTextView
android:id="@+id/textViewx"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:rotation="52"
android:textColor="#FFFFFF" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我的AngledTextView类:
public class AngledTextView extends TextView {
private int mWidth;
private int mHeight;
public AngledTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.save();
/*Paint textPaint = new Paint();
int xPos = (canvas.getWidth() / 2);
int yPos = (int) ((canvas.getHeight() / 2) - ((textPaint.descent() + textPaint.ascent()) / 2)) ;
canvas.rotate(45, xPos,yPos); */
super.onDraw(canvas);
canvas.restore();
}
}
Run Code Online (Sandbox Code Playgroud)
问题:

任何有关建议教程的提示或链接都将受到高度赞赏:)
我最近做过类似的事情.以下是我使用过的一些提示:
在onDraw方法上自定义路径.例如:
mPath = new Path();
mPath.moveTo(.0f, this.getHeight());
mPath.lineTo(this.getWidth(), this.getHeight());
mPath.lineTo(this.getWidth(),0.25f*this.getHeight());
mPath.lineTo(.0f, .0f);
mPath.lineTo(.0f, this.getHeight());
Run Code Online (Sandbox Code Playgroud)这将使路径类似于梯形.只需自定义您的点即可制作三角形.然后打电话
canvas.clipPath(mPath);
canvas.drawPath(mPath,mPaint);
Run Code Online (Sandbox Code Playgroud)通过这些点,您将绘制三角形.您可以将String传递给init方法并在绘制路径之前调用drawText:
canvas.drawText(str, xTit, yTit, mPaintTit);
Run Code Online (Sandbox Code Playgroud)我希望这会有所帮助=)
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |