我正在尝试创建一个背景为半圆的 TextView。我使用 ShapeDrawable 创建一个椭圆形。我尝试使用 ScaleDrawable 将椭圆形的垂直尺寸加倍并剪辑它来创建半圆。但是,ScaleDrawable 没有任何效果。为什么不?在视图背景中绘制半圆的最佳方法是什么?
资源/布局/activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/main_view"
android:background="@drawable/semicircle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:gravity="center_horizontal"
/>
</RelativeLayout>
res/drawable/semicircle.xml
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/circle"
android:scaleGravity="top|clip_vertical"
android:scaleHeight="200%"
android:scaleWidth="100%" >
</scale>
res/drawable/circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
<solid
android:color="#444" />
</shape>
src/.../MainActivity.java
//...
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
findViewById(R.id.main_view).getBackground().setLevel(10000);
}
//...
要剪辑椭圆形,只需将其嵌入到 ClipDrawable 中,如下所示:
res/drawable/semicircle.xml
<?xml version="1.0" encoding="utf-8"?>
<clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="vertical"
android:gravity="bottom">
<shape android:shape="oval">
<solid android:color="#444"/>
</shape>
</clip>
ClipDdrawable http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html共同目的是创建自定义进度条。当其“level”属性在 [0; 范围内增加时,它会剪辑其内容的一部分并逐渐显示它。 10000](0=隐藏,10000=完全显示)。
-
clipOrientation
是剪辑进度的方向。
-
gravity
是剪辑进度开始边缘/侧面。
要获得半圆,请设置此ClipDrawable
作为您的视图背景,并以编程方式调整其“级别”:
//...
findViewById(R.id.my_view).getBackground().setLevel(5000)
//...
适用于所有 Android 版本(“在 API 级别 1 中添加”)并且不需要自定义视图。
;-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)