【发布时间】:2015-10-12 08:37:39
【问题描述】:
我的项目要求在运行时动态地画一个圆。因此,为此目的,我使用 ShapeDrawable 以编程方式创建圆,但不幸的是,我在 ShapeDrawable 中找不到任何用于 CircleShape 的类或方法,而我只找到了OvalShape()。所以请帮助我通过 ShapeDrawable 画一个圆,只需传递圆的直径或半径。提前致谢。任何类型的定制都对我修复我的解决方案很有用。
我用于 ShapeDrawable 的代码是
public static ShapeDrawable drawCircle (Context context, int width, int height, int color) {
//////Drawing oval & Circle programmatically /////////////
ShapeDrawable oval = new ShapeDrawable (new OvalShape ());
oval.setIntrinsicHeight (height);
oval.setIntrinsicWidth (width);
oval.getPaint ().setColor (color);
return oval;
}
MainActivity.java中使用的代码
if(Build.VERSION.SDK_INT >= 16) {
txtCount.setBackground (Util.drawCircle (MainActivity.this, 50, 50, getResources ().getColor (R.color.yellow)));
txtHotelCount.setText ("20");
}else{
txtCount.setBackgroundDrawable (Util.drawCircle (MainActivity.this, 50, 50, getResources ().getColor (R.color.yellow)));
txtHotelCount.setText ("20");
}
xml 在我的项目中用于 TextView txtCount 是
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@color/white">
<TextView
android:id="@+id/txt_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_grey"
android:gravity="center"
android:textSize="12sp"
android:padding="2dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_grey"
android:text="AVAILABLE"
android:layout_marginLeft="10dp"
android:gravity="center"
/>
</LinearLayout>
但即使将宽度和高度设置为 50 后仍然没有运气。该属性的行为仍然像椭圆形。
【问题讨论】:
-
如果
width == height那么椭圆应该是一个圆? -
但我没有得到一个圆圈。例如,如果我将宽度设置为 42,高度设置为 23,我得到的是圆形。
-
显示使用此 ShapeDrawable 的代码。使用它的 View 的大小是多少?
标签: android android-canvas android-drawable xml-drawable shapedrawable