我有一个ImageView,我想用它rounded corners.
我用这个:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@null"/>
<stroke android:width="1dp"
android:color="#ff000000"/>
<corners android:radius="62px"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
并将此代码设置为我的imageview的背景.它可以工作,但我放在它上面的src图像ImageView是走出边界而不适应新的形状.
我该如何解决这个问题?
我想绘制一个使用路径宽度为5的路径定义的形状,其中所有笔划都在路径内,而不是内部笔划的一半和外部的一半.
谢谢,
卡尔
需求
如何创建看起来像这样的视图.
我想在屏幕上绘制一个视图,该视图分为几段,显示整个视图的值百分比.我的要求是
我想过的想法/事情
(1)自定义视图并排渲染3个矩形
我尝试了一个自定义视图,它可以并排显示3个矩形.但这些显然有方角.
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int viewHeight = 50;
canvas.drawrect(0, 0, 60, viewHeight, paint); // A
canvas.drawrect(60, 0, 120, viewHeight, paint); // B
canvas.drawrect(120,0, 180, viewHeight, paint); // C
}
Run Code Online (Sandbox Code Playgroud)
(2)圆角形状
我知道我可以使用Shape来定义带有圆角的矩形,但是这是一种颜色.
<shape xmlns:android="http://schemas.android.com/apk/res/android">
...
<corners
android:radius="4dp" />
....
</shape>
Run Code Online (Sandbox Code Playgroud)
(3)层列表
从具有两种不同颜色的Android矩形形状,我看到我可以使用图层列表来指定形状中的每个项目以具有不同的颜色.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<size
android:width="40dp"
android:height="40dp" />
<solid android:color="#F86F05" />
</shape>
</item>
<item android:top="10dp">
<shape android:shape="rectangle">
<size
android:width="30dp" …Run Code Online (Sandbox Code Playgroud) 使用Canvas clipPath时,我得到UnsupportedOperationException.
这发生在HTC Sensation XE(4.0.3)上.它在其他4.0.3设备上运行良好.
这是代码:
@Override
protected void dispatchDraw(Canvas canvas) {
canvas.save();
canvas.clipPath(this._mClip);
super.dispatchDraw(canvas);
canvas.restore();
}
Run Code Online (Sandbox Code Playgroud)
它在带有以下堆栈的"clipPath"上失败:
11-06 12:05:53.650: E/AndroidRuntime(25021): FATAL EXCEPTION: main
11-06 12:05:53.650: E/AndroidRuntime(25021): java.lang.UnsupportedOperationException
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.GLES20Canvas.clipPath(GLES20Canvas.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at com.applicat.meuchedet.views.RoundedListView.dispatchDraw(RoundedListView.java:76)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.View.draw(View.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.widget.AbsListView.draw(AbsListView.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.widget.ListView.draw(ListView.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.View.getDisplayList(View.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.ViewGroup.drawChild(ViewGroup.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.ViewGroup.dispatchDraw(ViewGroup.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.View.getDisplayList(View.java)
11-06 12:05:53.650: E/AndroidRuntime(25021): at android.view.ViewGroup.drawChild(ViewGroup.java)
11-06 12:05:53.650: …Run Code Online (Sandbox Code Playgroud)