У меня есть требование в моем проекте динамически рисовать круг во время выполнения. Поэтому для этой цели я использую ShapeDrawable для создания круга программно, но, к сожалению, я не смог найти какой-либо класс или методы внутри ShapeDrawable для CircleShape, вместо этого нашел только OvalShape()
. Так что любезно, пожалуйста, помогите мне нарисовать круг через ShapeDrawable, просто пройдя диаметр или радиус круга. Заранее спасибо. Любая настройка была бы полезна для меня, чтобы исправить мое решение.Drawing Circle программно с помощью Android 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, используя для TextViewtxtCount
в моем проекте как для
<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. Свойство ведет себя как овал.
если 'ширина == высота', то Овал должен быть кругом? – Blackbelt
Но я не получаю круг. Например, если я пропускаю ширину 42 и высоту 23, я получаю круг. – Chandru
Показать код, который использует этот ShapeDrawable. Каков размер представления, который его использует? – Karakuri